![](/img/trans.png)
[英]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.