通常,我们可以对数组和对象进行循环以遍历属性/值。但是循环正在阻塞。但是,超时可用于模拟异步循环。我设法为数组做到了。
//do stuff
(function asyncLoop(i){
//do stuff in the current iteration
if(++i < array.length){
setTimeout(function(){asyncLoop(i);}, 1);
} else {
callback();
}
}(0));
//do stuff immediately after, while looping
但是这个模型只在数组中循环时才有效,其中有一个限制器 -i
会被传递。有没有办法在一个对象上做到这一点?假设该对象有 50k 个键可以迭代,使其长得不合理。
我已经知道这一点setImmediate
(afaik,只有较新的 IE)和WebWorkers(还没有在 IE 中),但我只想知道是否可以在对象上使用相同的策略。