for循环中的Async.waterfall不能正确迭代

这显然是一个非常简化的代码片段,但是我的代码库被这个例子设置为模仿。

当我尝试从async.waterfall函数中logging当前的for循环索引时,我得到2. 2是我的数组中的元素总数,但当然索引应该是0和1.我已经有效地使用过去在for循环中的async.MAP,所以我不知道为什么这个asynchronous函数不工作。 感谢您对这个问题的任何帮助或嵌套asynchronous库函数的主题。

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); } ]) } 

那么,在async.waterfall完成处理的时候,我的价值就会发生变化。如果你想保留我的价值,你可以把它包装在一个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包装在一个recursion函数下,以达到这个目的。 http://book.mixu.net/node/ch7.html经过这个,真的很有帮助&#x3002;