使用以下代码:
async function demo(){
const ret1, ret2, ret3;
try {
ret1 = await task1();
} catch (e) {
// ...
}
if(!ret1.success) {
return ret1.message;
}
try {
ret2 = await task2();
} catch (e) {
// ...
}
if(!ret2.success) {
// retry or rollback task1;
return;
}
try {
ret3 = await task3();
} catch (e) {
// ...
}
if(!ret3.success) {
// retry or rollback task1
return;
}
return ret3;
}
task2依赖于task1,task3依赖于task2。此外,task1将在db中插入数据,因此如果task2或task3失败,它应该重试或回滚task1。任何更好的管理任务的解决方案?事实上,将有超过3个任务。
答案 0 :(得分:0)
完美的方式有点主观,但我认为这个更好。 肯定有这样做的方法,例如,如果你使用promise然后格式,因此下面应该工作
const demo = () => {
return task1()
.then(() => task2())
.then(() => task3())
.then(() => task4())
.then(() => task5())
.then(() => {
throw new Error("Testing Error");//Line 8
})
}
demo()
.catch(err => {
console.log(err);
// output
// Error: Testing Error at task1.then.then.then.then.then index.js:8:13)
});
使用async时,下面的格式应该可以正常工作
const demo = async () => {
await task1()
await task2()
await task3()
await task4()
await task5()
throw new Error("Testing Error");//Line 7
}
demo()
.catch(err => {
console.log(err);
// output
// Error: Testing Error at demo (index.js:7:9)
});