这是一个后续问题:How to suspend JavaScript to allow render的Javascript嵌套循环使用的setTimeout
我写了,做了那种暂停循环功能(允许与渲染):
function loop(count, callback){
var counter = 0
var iteration = function(){
callback(counter)
counter ++;
if (counter < count){
setTimeout(iteration, 0)
}
}
iteration();
}
这很好用,例如loop(100, function(i){ console.log(i) })
。并允许浏览器在每次迭代之间进行渲染。
但是,在循环之后执行填充时发生问题,因为不能保证循环已完成。其实,我认为它有一个保证,它有而不是(因为主线程在setTimeout第一次被调用后继续)。这是这些嵌套循环样时加剧:
loop(10, function(i){
loop(10, function(j){
console.log(i + '-' + j)
})
})
/// This definitely does not output the numbers in order...
我的使用情况是,我运行了一些仿真的,每个都包括多个步骤,我想呈现在每个之间。我是否以这种错误的方式去做?
你可以看看[这个答案](http://stackoverflow.com/questions/15963590/how-to-synch- javascript-callbacks/15964626#15964626),其中还讨论了同步异步代码。 –
如果你想在循环之后执行某些事情,可以使用类似'function loop(count,callback,callback_finish){if(counter
Passerby
_“,我想在每个之间渲染”_为什么需要超时0? – Simon