[英]promise got resolved instead of rejected, even the inner promise returned
[英]In catch function a rejected promise is returned but a resolved promise is not?
我的函数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块会起作用,但我更喜欢上面的语法。
问题是您没有从parent
那里归还child
。
这是一个简单的例子,
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
注意:建议不要then/catch
async/await
与then/catch
混合使用。 但是我认为显而易见的原因是可读性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.