我一直在使用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});
}
});
我只是想测试一个条件..
如果条件成真
然后运行一些函数
其他
运行其他功能。
ENDIF
清理
我也在尝试这个...一个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});
}
});
});
答案 0 :(得分:6)
您当然不能在数组中使用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});
}
});