2017-05-04 6 views
1

のみ最初の関数を呼び出した後に実行され、もう一つはあっても、以下のコードのために開始されない:nodejs /のJS:async.seriesのみ最初の機能も実行されるバック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")    
     } 
    ); 

なぜこれが第2のものに達していないのか?

出力:

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

答えて

3

私は

+0

ポインタのおかげでファディー - 私はさらに以下で詳しく説明しました。 – BabyGroot

1

おかげファディ(ヌル、 "1から呼ばれる")コールバック関数の最初の引数はnullにコールバックする必要があります信じています。 ここでのコールバックは、err、desc、.....その他のargsという必須の署名になります。 最初のパラメータでnot-nullまたはfalseでない値を渡すたびに、実行が中断され、次の関数が直列に実行されませんでした。つまり、受け取った最初の真のエラーで停止しました。

また、私は、各シリーズ関数が実行された後にコールバックが呼び出されると仮定していましたが、実際には直列のすべての関数が実行された後にコールされます。

次のように整流:

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

出力:あなたのコールバック関数の最初の引数がnullでなければなりません

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

それはまさに他の人が答えたものです。 –

+0

@キング・リロード:はい、その答えにはより精巧なものが必要でした。私は来ていただろうし、解決を望んでいたかもしれない他の人に多くの情報を提供したかったのです。とにかくダウン投票に感謝します。また、それが私が答えとして受け入れたものです。 – BabyGroot

+0

私はdownvoteを取り除きましたが、十分な情報を提供していない場合は、代わりに他人の回答を編集することを検討してください! :)ありがとう –

関連する問題