1

グローバル変数を使用する必要がないように、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.
});

最後のコールバックで「info」の値を認識したいと思います。ご協力いただきありがとうございます!

4

2 に答える 2

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

}) ();

そうすれば、最終的なコールバックはそれにアクセスできますが、そのコードを囲む匿名の自己実行関数のスコープ外には表示されません。

編集コーヒースクリプトで囲い込みを行うには:-

(() ->
  # my code
)()
于 2012-12-03T23:35:56.363 に答える
0

別の方法は次のとおりです。

(function(protectedVariable1,protectedVariable2) {
    //do something with protected variables
})(variable1,variable2);
于 2013-12-30T04:47:48.753 に答える