javascript - nodejs dan async.waterfall dengan syarat if dan senarai fungsi bersyarat
Saya telah bekerja dengan async.waterfall dan nodejs. Ia berfungsi dengan sangat baik tetapi kini saya mempunyai satu soalan mengenai aliran.
Saya ingin menggunakan kondisi if yang sederhana dalam aliran async.waterfall.
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});
}
});
Saya hanya mahu menguji untuk satu keadaan ..
Jika keadaannya benar
kemudian jalankan beberapa fungsi
lain
jalankan fungsi lain.
endif
pembersihan
Saya juga sedang mencuba ini...satu async.waterfall memanggil dua 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});
}
});
});
Jawapan #1
Anda semestinya tidak boleh menggunakan if dalam satu array, tetapi saya rasa apa yang anda cari adalah ini:
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});
}
});
