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

时间:2013-06-20 03:40:43

标签: javascript jquery

self.showPanel();
self.updateSliderValue();

self.addPoints(1,2,3);

self.setOptions();
self.removeValues();

addPoints方法会为应用添加点数并且需要花费大量时间,所以我希望它在后台运行,应用程序会转到setOptions以及其下方的其他功能。请帮忙。

2 个答案:

答案 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/

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