Comment je devrais modifier le code suivant, afin que je puisse m'assurer que Process3 est déclenché après Process2.update ou Process2.create terminé?
Le but principal pour le code suivant est que je veux faire
Process1 terminé. Ensuite, vérifiez si ID existe, si oui, Process2.update est déclenché. sinon, Process2.create est déclenché.
Une fois Process2 terminé, vérifiez si cmd existait. si oui, déclenché Process3.comment déclencher un processus asynchrone l'un après l'autre
run: function (req, res) {
if (req.session) {
const values = req.params.all();
const id = values.id;
const cmd = values.cmd;
const param = _.omit(values, ['cmd', 'id']);
const cb1 = (e, d) => {
if (e) {
console.log(e);
res.status(400).send({ e });
} else {
Process1(values);
res.status(200).send({ d });
}
};
const cd2 = (id, param, cb1) => {
if (id) {
Process2.update({ id }, param, cb1);
} else {
Process2.create(param, cb1);
}
};
if (cmd) {
cd2(id, param, cb1, Process3(values, cmd));
}
else {
cd2(id, param, cb1);
}
} else {
res.status(403).send({ e: 'Forbidden access.' });
}
}
approche
d'essai en suivant, mais ne sais pas comment je peux passer argument id, params à Process2 et processus3
let async = require('async');
const Process1 = (value, cb) => {
console.log("Process1()");
console.log(value);
cb(null, value + 1);
};
const Process2 = (value, cb) => {
console.log("value(): wait 5 sec");
console.log(value);
cb(null, value+10);
};
const Process3 = (value, cb) => {
console.log(value);
console.log("Process3(): wait 5 sec");
cb(null, value+100);
};
let Pro_1_2 = async.compose(Process2, Process1);
let Pro_2_3 = async.compose(Process3, Process2);
Pro_1_2(1, (e, r) => {
Pro_2_3(r, (error, result) => {
console.log(result);
});
});
'Process1, 2, 3' sont des fonctions asynchrones? Ils renvoient la promesse? – alexmac