【发布时间】:2018-10-30 00:49:25
【问题描述】:
我正在尝试在 forEach 循环完成所有迭代后执行一个函数。
这个answer 提供了一个有趣的解决方案,但我无法让它工作。
这是我改编的代码,创建了一个简单的 asyncFunction()。
function callback () { console.log('all done'); }
function asyncFunction(item) {
console.log("in async function, item is " + item)
}
var itemsProcessed = 0;
[1, 2, 3].forEach((item, index, array) => {
asyncFunction(item, () => {
itemsProcessed++;
console.log("in callback area, itemsProcessed is " + itemsProcessed )
if(itemsProcessed === array.length) {
callback();
}
});
});
正如在此JSfiddle 中可见,脚本正确执行异步函数,但未能输入递增itemsProcessed 并应触发callback() 函数的部分。
我对胖箭头函数不太熟悉,所以错误可能来自它们的使用。
谁能解释为什么脚本没有按预期运行?
【问题讨论】:
-
当你调用它时,你将一个函数作为第二个参数传递给
asyncFunction(),但函数声明不期望第二个参数,并且永远不会调用传递给它的回调 -
有道理,谢谢。但是我不确定要声明哪个参数。显然
asyncFunction(item, ())不起作用。您能否更明确地解释如何处理第二个论点?
标签: javascript foreach callback