簡體   English   中英

如何從異步調用返回錯誤

[英]How to return error from asynchronous call

我有一個寫在文件中的函數。

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文件中的錯誤部分

有人可以幫我在這里做錯什么嗎

您需要從stepsPerDayAchievement方法引發錯誤:

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

這樣,它將落在調用函數的catch塊中。

由於異步函數返回Promise,因此您無需在stepsPerDayAchievement函數中嘗試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
  }

暫無
暫無

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

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