簡體   English   中英

在catch函數中,返回了被拒絕的承諾,但是沒有解決的承諾?

[英]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/awaitthen/catch混合使用。 但是我認為顯而易見的原因是可讀性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM