javascript - nodejs e async.waterfall com condições if e lista de funções condicionais
Tenho estado a trabalhar com async.waterfall e nodejs. Está a funcionar muito bem, mas agora tenho uma pergunta sobre o fluxo.
Quero usar uma condição if simples no fluxo 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});
}
});
Eu só quero testar uma condição ..
Se a sua condição for verdadeira
então execute algumas funções
senão
executar outras funções.
fimse
limpeza
Eu também estava a tentar isto... um async.waterfall a chamar dois 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});
}
});
});
Resposta #1
Certamente não podes usar instruções if dentro de um array, mas penso que o que estás à procura é isto:
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});
}
});
