繁体   English   中英

从匿名函数内部的函数返回

[英]Return from function from inside anonymous function

我有以下功能。

function foo() {
  return new Promise(async (resolve, reject) => {
     await someFunctionThatWillAlwaysBeRejected().catch(err => {
       return reject(err);
     })
     console.log("Some output that should never be shown");
     resolve();
   })
  }

该函数将按预期方式拒绝,但此后它将继续运行直到结束。 我想这是因为return渔获内只能从匿名函数返回,而不是从整个Promise 问题是,是否有任何从catch内返回的方法,这样代码在那之后将不会继续执行? 我知道我可以将所有内容包装在try catch而不是使用.catch但是我正试图避免这种情况。

问题是,是否有任何方法可以从渔获物内部返回

没有。

我知道我可以将所有内容包装在try catch中,而不是使用.catch,但是我正试图避免这种情况。

async / await允许您精确地执行此操作,从而可以解决您遇到的问题。 停止避免它。

尝试这个 :

return new Promise(async (resolve, reject) => {
 someFunctionThatWillAlwaysBeRejected().then(result => {
   console.log("Some output that should never be shown");
   resolve();
 })
 .catch(err => {
   return reject(err);
 })

})

您不需要那些promise包装器,因为异步函数总是返回Promise。 因此,您的代码可以简化:

async function foo() {
     await someFunctionThatWillAlwaysBeRejected();
     console.log("Some output that should never be shown");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM