2017-05-04 33 views
1

只有第一個函數執行後,只執行async.series的第一功能,第二個甚至沒有開始爲下面的代碼:的NodeJS/JS:即使回調async.series的

var async = require("async"); 
var src = 0; 
async.series([ 
    function(callback) { 
     callback("Called from 1"); 
    }, 
    function(callback){ 
     callback("Called from 2"); 
    }] 
, function (desc) { 
      console.log(desc) 
      src++   
      console.log(src+".1."+"--->"+src) 
      console.log(src+".2."+"now it should return")    
     } 
    ); 

任何想法爲什麼這沒有達到第二個?

輸出:

Called from 1 
1.1.--->1 
1.2.now it should return 

回答

3

我堅信,對於回調的第一個參數應該是空的回調(NULL, 「從1叫做」)

+0

感謝Fadi爲指針 - 我也在下面進一步闡述。 – BabyGroot

1

感謝法迪。 只是爲了詳細說明,這裏的回調帶有強制簽名err,desc,.....其他參數。 正如所觀察到的,只要我在第一個參數中傳遞了非空值或非錯誤值,執行就停在那裏,然後 - 沒有執行下一個串行函數,即停在接收到的第一個真實錯誤。

此外,我曾假設回調將在每個系列函數執行後調用,但實際上在所有函數串行執行後調用它。

整流如下:

var async = require("async"); 
var src = 0; 
async.series([ 
    function(callback) { 
     callback(null,"Called from 1"); 
    }, 
    function(callback){ 
     callback(false,"Called from 2"); 
    }] 
, function (err,desc) { 
      console.log(desc) 
      src++   
      console.log(src+".1."+"--->"+src) 
      console.log(src+".2."+"now it should return")    
     } 
    ); 

輸出:

[ 'Called from 1', 'Called from 2' ] 
1.1.--->1 
1.2.now it should return 
+0

這正是其他人回答已經是 –

+0

@King重新加載:是的,但答案需要更詳細說明 - 我想提供更多的信息給其他人誰會來,並會通過解決方案。無論如何感謝您的投票。另外,這也是我接受的答案。 – BabyGroot

+0

我擺脫了downvote,但請考慮編輯別人的答案,而不是他們沒有提供足夠的信息! :)謝謝 –

相關問題