nodejs 和 async.waterfall 带有 if 条件和条件函数列表。
Posted
技术标签:
【中文标题】nodejs 和 async.waterfall 带有 if 条件和条件函数列表。【英文标题】:nodejs and async.waterfall with if conditions and conditional function list. 【发布时间】:2017-05-12 20:23:49 【问题描述】:我一直在使用 async.waterfall 和 nodejs。它工作得很好,但现在我有一个关于流量的问题。
我想在 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);
);
我只想测试一种情况..
如果条件为真
然后运行一些函数
否则
运行其他功能。
结束
清理
我也在尝试这个...一个 async.waterfall 调用两个 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);
);
);
【问题讨论】:
【参考方案1】:您当然不能在数组中使用 if
语句,但我认为您正在寻找的是:
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);
);
【讨论】:
您可以将function (results) callback(results);
替换为callback
哇.. 感谢您的快速反馈。我现在就试试……谢谢菲尔……
@philipfwilson,当然,如果它解决了您的问题,您可以接受答案以上是关于nodejs 和 async.waterfall 带有 if 条件和条件函数列表。的主要内容,如果未能解决你的问题,请参考以下文章
async.waterfall 和 child_process.execSync 有啥区别?
Node.js 中 For 循环中的 async.waterfall