这显然是一个极其简化的代码片段,但我的代码库被这个例子设置为模仿的东西所阻碍。
当我尝试从async.waterfall函数中记录当前的for循环索引时,我得到2. 2是我的数组中的总元素数,但当然索引应该是0和1.我'我在过去的for循环中有效地使用了async.MAP,所以我不确定为什么这个异步函数不起作用。感谢您对此事项或嵌套异步库函数主题的任何帮助。
var objects = [
{objectName: "hello",
objectPurposes: ["demo"]},
{objectName: "goodbye",
objectPurposes: ["demo", "fun"]}];
for (var i=0; i<objects.length; i++){
async.waterfall([
function(callback){
console.log(i);
}
])
}
答案 0 :(得分:1)
嗯,当async.waterfall完成处理时,i的值会发生变化。如果你想保留i的值,你可以把它包裹在IIFE周围。
var objects = [{
objectName: "hello",
objectPurposes: ["demo"]
}, {
objectName: "goodbye",
objectPurposes: ["demo", "fun"]
}];
for (var i = 0; i < objects.length; i++) {
(function(i) {
async.waterfall([
function(callback) {
console.log(i);
}
])
})(i);
};
我宁愿使用obj.shift()并将async.waterfull包装在递归函数下以实现此目的。 http://book.mixu.net/node/ch7.html通过这个,它真的很有帮助。