Javascript JS-良好的睡眠功能
我有一个非常CPU密集型的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);},
<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);
}