我有一个非常耗费CPU的JS功能,因为长时间没有响应,浏览器会杀死它。我希望功能完成,同时我希望能够同时使用我的浏览器。
我的解决方案是在每次迭代后在我的函数中实现类似睡眠的功能:
<p id="debug"/>
<script>
function example(i) {
//do stuff
if(i < 100) window.setTimeout(function() {example(i+1);}, 100);
}
example(0);
</script>
解决方案效果很好 - 但有没有更好的方法来实现此功能? - 不使用不必要的递归。
答案 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);
}