繁体   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