好的,我喜欢(d)使用await / async尝试/捕获。
但是我该怎么办。
我想这样做。
let a = await doAbc();
let b = await do123(a);
它将变成
let a, b;
try {
a = await doAbc();
} catch(e) {
a = await doZxc();
}
try {
b = await do123(a);
} catch (e) {
console.log(e);
return;
}
if (b.data == undefined) {
return -1;
} else {
return b;
}
目前,我很后悔。
答案 0 :(得分:1)
请记住,您可以await
进行任何承诺。因此,您可以这样做:
let a = await doAbc().catch(doZxc); // or .catch(() => doZxc())
let b = await do123(a);
甚至
let b = await doAbc().catch(doZxc).then(do123);
连同其余代码:
try {
let b = await doAbc().catch(doZxc).then(do123);
return b.data == undefined ? -1 : b;
} catch (e) {
console.log(e);
return;
}
答案 1 :(得分:0)
如果这是一种逻辑功能,则可以一次尝试将所有await
分组,然后根据错误采取措施。
let a
let b
try {
a = await doAbc();
b = await do123(a);
} catch (err) {
// take appropriate action based on err
}
答案 2 :(得分:0)
创建函数首先返回a,然后使用第一个函数返回的值创建b,就像这样的代码
function firstCode(){
try {
a = await doAbc();
} catch(e) {
a = await doZxc();
}
return a;
}
function secondFunction(){
try {
b = await do123(firstFunction());
} catch (e) {
console.log(e);
return;
}
}