有没有办法将信息传递给一个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);