次のコードをどのように修正する必要があるので、Process2.updateまたはProcess2.createの完了後にProcess3がトリガされるようにすることはできますか?
次のコードの主な目的は、
Process1を完成させたいです。次にidが存在するかどうかを確認し、存在する場合はProcess2.updateがトリガーされるようにします。そうでなければ、Process2.createがトリガーされます。
Process2が終了したら、cmdが存在するかどうかを確認します。 YESの場合、Process3をトリガします。私は、引数のIDを渡すことができるかどうかはわかり以下ではなくによって非同期プロセスを次々にトリガする方法
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.' });
}
}
トライアプローチ、プロセス2とprocess3
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'は非同期関数ですか?彼らは約束を返す? – alexmac