Javascript JS-良好的睡眠功能

Javascript JS-良好的睡眠功能,javascript,sleep,Javascript,Sleep,我有一个非常CPU密集型的JS函数,浏览器会因为长时间没有响应而终止它。我希望完成这个功能,同时我也希望能够使用我的浏览器 我的解决方案是在每次迭代后在我的函数中实现类似睡眠的功能: <p id="debug"/> <script> function example(i) { //do stuff if(i < 100) window.setTimeout(function() {example(i+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>

功能示例(i){ //做事 if(i<100)window.setTimeout(function(){example(i+1);},100); } 示例(0);


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

有一种称为web工作者的东西,类似于线程。请参阅:

设置超时正是您需要的功能。据我所知,没有其他选择。现在有WebWorkers,但setTimeout更兼容,这里有一个Hm,没有考虑这些。请注意,这是一个相对较新的功能,嗯,很有趣,谢谢分享信息。我接受这个答案,即使我不能使用它-我的函数直接操纵文档(这个操纵本身就是CPU密集型任务),而web工作者没有访问权限。
var sleep = function(period, decision, callback){
    var interval = setInterval(function(){
        if (decision()) {
            interval = clearInterval(interval);
            callback();
        }
    }, period);
}