我的函数caller
调用了一个函数parent
,该函数本身调用了child
。如果child
错误,那么我需要返回caller
。
当我reject
兑现承诺时,此方法有效,但是,当我尝试并返回承诺resolve
时,它并未返回至caller
function caller() {
return parent()
}
async function parent(){
const child = await foo(
// more code
).catch(error=>{
if(error === 123) {
return Promise.resolve("This was resolved");
}
return Promise.reject("This was rejected");
})
}
我认为try / catch块会起作用,但是我更喜欢上面的语法。
答案 0 :(得分:0)
问题是您没有从child
返回parent
。
这是一个简单的例子,
function caller() {
return parent()
}
async function parent() {
const child = await foo()
.catch(error => {
if (error === 123) {
return Promise.resolve("This was resolved");
}
return Promise.reject("This was rejected");
})
return child;
}
function foo(){
return Promise.reject(123);
}
caller().then(console.log);//This was resolved
注意:然后完全不建议再次将async/await
与then/catch
混合。但是我认为显而易见的原因是可读性。