如何从异步调用返回错误

时间:2019-01-15 05:27:08

标签: javascript node.js asynchronous promise async-await

我有一个写在文件中的函数。

async myfunction() {
  try {
    const data = await achievementService.stepsPerDayAchievement()
    console.log(data)
  } catch(err) {
    console.log(err)
  }
}

我从这里调用另一个函数,该函数写入另一个称为成就的文件中。

  async stepsPerDayAchievement(user, stepsCount) {
    try {
      await ApiCall()
    } catch (err) {
      return err
    }
  }

但是当我从此函数返回err时,它假定它为函数return,并且在data中收到错误。我需要的是当我从 stepsPerDayAchievement函数进入我的第一个文件function

中的错误部分

有人可以帮我在这里做错什么吗

2 个答案:

答案 0 :(得分:4)

您需要通过 stepsPerDayAchievement 方法引发错误:

  async stepsPerDayAchievement(user, stepsCount) {
    try {
      await ApiCall()
    } catch (err) {
      throw new Error(err);
    }
  }

这样,它将落入调用函数的catch块中。

答案 1 :(得分:2)

由于异步函数返回了Promise,因此您不需要在stepsPerDayAchievement函数中尝试catch块。我认为您的代码应如下所示:

sendResponse(license)