1

我有一个非常占用 CPU 资源的 JS 函数,它让浏览器因为长时间没有响应而将其杀死。我想完成这个功能,同时我也希望能够使用我的浏览器。

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

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

    example(0);
</script>

该解决方案运行良好 - 但有没有更好的方法来实现此功能?- 不使用不必要的递归。

4

2 回答 2

3

有一种叫做网络工作者的东西,类似于线程。参考:http ://www.html5rocks.com/en/tutorials/workers/basics/

于 2013-02-06T12:35:41.707 回答
0
var sleep = function(period, decision, callback){
    var interval = setInterval(function(){
        if (decision()) {
            interval = clearInterval(interval);
            callback();
        }
    }, period);
}
于 2013-07-29T21:26:02.863 回答