有没有办法将信息传递给一个async.js并行调用,所以我不必使用全局variables?

有没有办法将信息传递给一个async.js并行调用,所以我不必使用全局variables?

async.parallel([ function(callback){ setTimeout(function(){ callback(null, 'one'); }, 200); }, function(callback){ setTimeout(function(){ callback(null, 'two'); }, 100); }, ], // optional callback function(err, results){ console.log(info) // the results array will equal ['one','two'] even though // the second function had a shorter timeout. }); 

我想要最后的callback,以了解“信息”的价值。 谢谢你的帮助!

为避免引入全局variables,您可以将其放置在机箱内:

 (function() { var info = "Some info"; async.parallel([ function(callback) { setTimeout(function() { callback(null, "one"); }, 200); }, function(callback) { setTimeout(function() { callback(null, "two"); }, 100); } ], function(error, result) { console.log(info); }); }) (); 

这样,最后一个callback就可以访问它,但是在包含该代码的匿名自执行函数的范围之外,它将不可见。

编辑在coffeescript中做一个机箱: –

 (() -> # my code )() 

另一种方法是:

 (function(protectedVariable1,protectedVariable2) { //do something with protected variables })(variable1,variable2);