JS - 很好的睡眠功能

时间:2013-02-06 12:32:33

标签: javascript sleep

我有一个非常耗费CPU的JS功能,因为长时间没有响应,浏览器会杀死它。我希望功能完成,同时我希望能够同时使用我的浏览器。

我的解决方案是在每次迭代后在我的函数中实现类似睡眠的功能:

<p id="debug"/>
<script>
    function example(i) {
            //do stuff
            if(i < 100) window.setTimeout(function() {example(i+1);}, 100);
    }

    example(0);
</script>

解决方案效果很好 - 但有没有更好的方法来实现此功能? - 不使用不必要的递归。

2 个答案:

答案 0 :(得分:3)

有一种叫做Web worker的东西类似于线程。请参阅:http://www.html5rocks.com/en/tutorials/workers/basics/

答案 1 :(得分:0)

var sleep = function(period, decision, callback){
    var interval = setInterval(function(){
        if (decision()) {
            interval = clearInterval(interval);
            callback();
        }
    }, period);
}