self.showPanel();
self.updateSliderValue();
self.addPoints(1,2,3);
self.setOptions();
self.removeValues();
addPoints
方法会为应用添加点数并且需要花费大量时间,所以我希望它在后台运行,应用程序会转到setOptions
以及其下方的其他功能。请帮忙。
答案 0 :(得分:7)
javascript是一个单线程应用程序,这意味着没有什么比运行后台线程更好。
您可以做的是在主要功能完成后运行功能addPoints
,您可以使用setTimeout来执行此操作
setTimeout(function(){
self.addPoints(1,2,3);
}, 0)
这将推迟addPoints
的执行,直到当前脚本执行结束。
答案 1 :(得分:2)
浏览器方面你有一些选择(假设客户端由于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/
我确信还有其他几个选项,但目标是让你的事件循环紧密,这样你就不会忘记用户体验等。