2016-12-28 17 views
3

私はasync.waterfallとnodejを使って作業しています。その作業は非常にうまくいきましたが、今はフローに関する質問があります。nodejsとasync.waterfallとif条件付きおよび条件付き関数リスト。

async.waterfallのフローでif条件を使いたいです。それが条件であれば、私はただ一つの条件..

をテストしたい

async.waterfall([ 
    callOne, 
    callTwo, 
     if(condition > 0) { 
      callTest1, 
      callTest2, 
     }else{ 
      callTest3, 
      callTest4, 
     } 
    callThree, 
    callFour, 
    callFive, 
], function (err, result) { 
    if (err) { 
     return res.status(400).jsonp({error: err}); 
    } 
}); 

が真である

その後、

実行その他の機能いくつかの機能を実行します。

endifの

クリーンアップ

私も... 1 async.waterfallあなたは確かに内部でifステートメントを使用することはできません2 async.waterfall/sの

router.post('/testUser', function (req, res, next) { 

    ...... 


    function validateAccount(callback) { 
    if (config.CHECK_EMAIL_MEMBER_ID > 0) { 
        async.waterfall([ 
         callOne, 
         callTwo, 
          if(condition > 0) { 
           callTest1, 
           callTest2, 
          }else{ 
           callTest3, 
           callTest4, 
          } 
         callThree, 
         callFour, 
         callFive, 
        ], function (err, result) { 
         if (err) { 
          return res.status(400).jsonp({error: err}); 
         } 
        }); 
    } else { 
        async.waterfall([ 
         callOneb, 
         callTwob, 
          if(condition > 0) { 
           callTest1b, 
           callTest2b, 
          }else{ 
           callTest3b, 
           callTest4b, 
          } 
         callThreeb, 
         callFourb, 
         callFiveb, 
        ], function (err, result) { 
         if (err) { 
          return res.status(400).jsonp({error: err}); 
         } 
        }); 
    } 
} 




async.waterfall([ 
    setupUser, 
    testOne, 
    validateAccount, 
    sendEmail, 
], function (err, result) { 
    if (err) { 
     return res.status(400).jsonp({error: err}); 
    } 
}); 


}); 

答えて

4

を呼び出し、これをしようとしていました配列ですが、私はあなたが探していると思います:

async.waterfall([ 
    callOne, 
    callTwo, 
    function (condition, callback) { 
     if (condition > 0) { 
      async.waterfall([ 
       callTest1, 
       callTest2 
      ], callback); 
     } else { 
      async.waterfall([ 
       callTest3, 
       callTest4 
      ], callback); 
     } 
    }, 
    callThree, 
    callFour, 
    callFive, 
], function (err, result) { 
    if (err) { 
     return res.status(400).jsonp({error: err}); 
    } 
}); 
+1

あなたは 'function(results ){コールバック(結果); } ''コールバックと – GilZ

+0

はい、それは正しい、ありがとう –

+0

すごい..クイックフィードバックありがとう。私は今それを試してみる..ありがとうPhil .. – philipfwilson