如何在后台运行一组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/
我确信还有其他几个选项,但目标是让你的事件循环紧密,这样你就不会忘记用户体验等。