self.showPanel();
self.updateSliderValue();
self.addPoints(1,2,3);
self.setOptions();
self.removeValues();
addPoints
方法向应用程序添加点并且需要相当多的时间,所以我希望它在后台运行并且应用程序转到setOptions
它下面的其他功能。请帮忙。
self.showPanel();
self.updateSliderValue();
self.addPoints(1,2,3);
self.setOptions();
self.removeValues();
addPoints
方法向应用程序添加点并且需要相当多的时间,所以我希望它在后台运行并且应用程序转到setOptions
它下面的其他功能。请帮忙。
javascript 是一个单线程应用程序,这意味着没有什么可以像后台线程一样运行。
你可以做的是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/
我敢肯定还有其他几种选择,但目标是保持事件循环紧密,以免影响用户体验等。