我正在使用 for each 来处理一个列表,我希望只有当元素 n-1 结束时才执行该元素 n:
var elements = ["stuff1", "stuff2", "stuff3"];
elements.forEach(function(element){
someAsyncFunction(element, function(){
console.log('do more stuff');
});
});
我需要它们相互等待并以正确的顺序执行。
编辑:我遇到了 process.nextTick(),但我不确定它是否保证等待和顺序。
最佳答案
只需将元素存储在数组中,方法与您在问题中所做的完全相同。然后使用 elements.shift()
检索并删除第一个元素。
var elements = ["stuff1", "stuff2", "stuff3"];
(function next () {
if (!elements.length) {
return;
}
var element = elements.shift();
someAsyncFunction(element, function (err, result) {
…
next();
});
})();
关于javascript - 对于异步函数的迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25489178/