2015-12-02 60 views
1

我的代碼有什麼問題嗎?我使用async.eachSeries,但是我的結果總是拋出undefined。async.js:async.eachSeries結果總是拋出undefined

這裏我的代碼:

async.eachSeries([1,2,3], function(data, cb) { 
    setTimeout(function() { 
     cb(null, data+1); 
    }, 1000); 
}, function(err, result) { 
    console.log(err, result); 
}); 

我的日誌返回:null,不確定的,而不是null[2,3,4]

感謝...和我糟糕的英國XD

回答

2

第二個參數是遺憾在迭代完成時調用並使用eachSeries(),它只需要一個參數err。如果你想result,你必須使用mapSeries

async.mapSeries([1, 2, 3], 
    function (data, cb) { 
     setTimeout(function() { 
      cb(null, data + 1); 
     }, 1000); 
    }, 
    function (err, result) { 
     console.log(result); 
    } 
); 
+0

謝謝...我剛剛注意到它...每個系列沒有結果參數XD – Sunny

1

您可以使用結果與eachSeries形式(),以及:

var result = []; 
async.eachSeries([1,2,3], function(data, cb) { 
    setTimeout(function() { 
     result.push(data+1); 
     cb(null); 
    }, 1000); 
}, function(err) { 
    console.log(err, result); 
}); 

這應該工作,雖然我不能夠目前我自己測試一下。

+0

'mapSeries'存在這種情況。 – Shanoor

+0

是啊...這種方法有點棘手,但工作...我測試了它..但我想我會使用@ShanShan方法。 感謝您的回答btw XD – Sunny

+0

我知道@ShanShan,只是覺得我會提供一個使用OPs方法的答案。 :) – yusijs

相關問題