使用以下代码,我可以确定最后一个回调将返回更新的变量吗?
var a = 0;
async.forEach(collectionarray, function(item, cb1) {
async.forEach(collection.anotherarray, function(item, cb2) {
a += item.number;
cb2();
}, function(err) {
if(err) console.log(err);
})
cb1();
}, function(err) {
if(err) console.log(err);
console.log(a); // will this be updated for all the collection.anotherarray.number ?
})
答案 0 :(得分:0)
.forEach
的第三个参数有双重用途:作为所有迭代完成时的回调,或报告错误。在内部cb1()
上的回调中调用.forEach
:
var a = 0;
async.forEach(collectionarray, function(item, cb1) {
async.forEach(collection.anotherarray, function(item, cb2) {
a += item.number;
cb2();
}, function(err) {
if(err) console.log(err);
cb1();
});
}, function(err) {
if(err) console.log(err);
console.log(a);
})
您编写的方法几乎肯定无法正常工作。外部.forEach
将认为它很快就完成了。