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

时间:2012-12-03 23:23:52

标签: javascript node.js asynchronous

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

我希望最后的回调能够意识到“信息”的价值。谢谢你的帮助!

2 个答案:

答案 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);