在完成所有异步回调之后,每个回调都完成了顾名思义。我该怎么做?我想打电话whenAllDone()在执行forEach-循环之后,对每个元素进行了遍历,并进行了一些异步处理。[1, 2, 3].forEach(
function(item, index, array, done) {
asyncFunction(item, function itemDone() {
console.log(item + " done");
done();
});
}, function allDone() {
console.log("All done");
whenAllDone();
});能让它像这样工作吗?当用于Each的第二个参数是回调函数时,它会在所有迭代过程中运行吗?预期产出:3 done1 done2 doneAll done!
3 回答
隔江千里
TA贡献1906条经验 获得超10个赞
var ctr = 0;posts.forEach(function(element, index, array){ asynchronous(function(data){ ctr++; if (ctr === array.length) { functionAfterForEach(); } })});
functionAfterForEach
asynchronous
当年话下
TA贡献1890条经验 获得超9个赞
// INCORRECTvar list = [4000, 2000];list.forEach(function(l, index) { console.log(l + ' started ...'); setTimeout(function() { console.log(index + ': ' + l); }, l);});
4000 started2000 started1: 20000: 4000
index === array.length - 1
var list = [4000, 2000];var counter = list.length;list.forEach(function(l, index) { console.log(l + ' started ...'); setTimeout(function() { console.log(index + ': ' + l); counter -= 1; if ( counter === 0) // call your callback here }, l);});
添加回答
举报
0/150
提交
取消