带有以下代码:
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取决于任务1,task3取决于任务2。此外,任务1将插入数据库中的数据,因此,如果任务2或任务3失败,则应重试或回滚任务1。有什么更好的解决方案来管理任务吗?实际上,将有3个以上的任务。
完美的方法有点主观,但我认为这更好。肯定有这样做的方法
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)
});
使用异步时等待下面的格式应起作用
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)
});