所以,我想遍历数百个项目,而不是在处理每个项目时阻塞 UI 线程——总共可能需要几秒钟的工作,所以我想每隔一段时间就放弃一次。几本书推荐了一个看起来像这样的循环:
function processArray(items, process, callback){
var todo = items.concat(); //create a clone of the original
setTimeout(function () {
process(todo.shift());
if (todo.length > 0) {
setTimeout(arguments.callee, 100);
} else {
callback(items);
}
}, 100);
}
(参考http://answers.oreilly.com/topic/1506-yielding-with-javascript-timers/)
上次我使用了一个聪明的循环,我发现下划线已经支持它并且可能有更好、更稳定等版本。我如何在下划线中执行上述操作?_.each 似乎不适用,_.each 似乎没有产生或提供更改暂停时间的选项。