代码之家  ›  专栏  ›  技术社区  ›  Profer

如何从异步调用返回错误

  •  0
  • Profer  · 技术社区  · 6 年前

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

    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 回复  |  直到 6 年前
        1
  •  4
  •   nicholaswmin    6 年前

    您需要从中抛出一个错误 阶梯式成就

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

        2
  •  3
  •   mstfyldz    6 年前

    由于异步函数返回承诺,所以不需要在stepsPerDayAchievement函数中使用try-catch块。我认为您的代码应该如下所示:

    async myfunction() {
        const data = await achievementService.stepsPerDayAchievement()
        .then(()=> console.log(data);)
        .catch(()=> console.err("error");)
    }
    
     async stepsPerDayAchievement(user, stepsCount) {
          var apiCallResultData = await ApiCall();
          return apiCallResultData
      }