如何在后台运行一组js函数

self.showPanel(); self.updateSliderValue(); self.addPoints(1,2,3); self.setOptions(); self.removeValues(); 

addPoints方法为app添加了点数并且需要花费很多时间,因此我希望它在后台运行,应用程序会转到setOptions和其下的其他函数。 请帮忙。

javascript是一个单线程应用程序,这意味着没有什么比运行后台线程更好的了。

你可以做的是在main函数完成后运行addPoints函数,你可以使用setTimeout来做到这一点

 setTimeout(function(){ self.addPoints(1,2,3); }, 0) 

这将推迟执行addPoints直到当前脚本执行结束。

浏览器方面你有一些选择(假设客户端由于jquery标签那里)

首先,您可以利用setImmediate:

https://developer.mozilla.org/en-US/docs/Web/API/window.setImmediate

其次,您可以使用计时器并将其拆分,这是一个非常简单的示例,然后如果您想要处理更多的事情,只需将它们随时填入thingstodoarray。 对此进行多项修改中的任何一项。

  int howoftentocheck = 60*1000; //60s var thingstodoarray = []; thingstodoarray.push("do this"); function checkForStuffToDo(){ if(thingstodoarray.length){ //.. do things be sure and pop or shift the thing you did. }else{ setTimeout(function() { checkForStuffToDo() }, howoftentocheck) } }(); 

第三,不是轮询你可以使用事件,所以注册事件,比如jQuery或其他提供事件的库,然后你可以在你想要进行一些处理时使用.on和.trigger来激活它们。

http://api.jquery.com/trigger/

我确信还有其他几个选项,但目标是让你的事件循环紧密,这样你就不会忘记用户体验等。