有没有办法将信息传递给async.js并行调用,所以我不必使用全局变量?
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.
});
我希望最后的回调能够意识到“信息”的价值。谢谢你的帮助!
答案 0 :(得分:1)
为避免引入全局变量,您可以将其放在机箱中: -
(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);
});
}) ();
这样最后的回调可以访问它,但是在包含该代码的匿名自执行函数的范围之外它是不可见的。
编辑要在coffeescript中执行机箱: -
(() ->
# my code
)()
答案 1 :(得分:0)
另一种方式是:
(function(protectedVariable1,protectedVariable2) {
//do something with protected variables
})(variable1,variable2);