3
通常,我们可以为数组和对象循环遍历属性/值。但循环阻塞。但是,超时可用于模拟异步循环。 i managed to do it for an array。那被围绕通过i
-通过javascript中的对象“异步”循环
//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
但这种模式,同时在循环数组,那里有一个限制只适用。有没有办法做到这一点的对象?让我们只是说对象有50k个键来遍历,这使得它不合理地长。我只是想知道是否有可能在一个对象上使用相同的策略。但是我只想知道是否有可能在对象上使用相同的策略。
但这意味着循环通过对象只是将它们(或引用)放入数组中。 – Joseph 2012-04-18 10:24:58
@Joseph - 是的,人们必须首先将属性收集到数组中。没有属性的异步迭代器。 – jfriend00 2012-04-18 10:25:55
['Object.keys'](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/keys)+ [es5-shim](https://github.com/kriskowal/es5- shim) – katspaugh 2012-04-18 10:29:28