Как вернуть ошибку из асинхронного вызова - PullRequest
0 голосов
/ 15 января 2019

У меня есть функция, записанная в файле.

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 голосов
/ 15 января 2019

Поскольку асинхронные функции возвращают обещания, вам не нужно пытаться использовать блок catch в функции stepsPerDayAchievement. Я думаю, что ваш код должен быть таким, как показано ниже:

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
  }
0 голосов
/ 15 января 2019

Вам необходимо сгенерировать ошибку из stepsPerDayAchievement метода:

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

таким образом он попадет в блок catch вызывающей функции.

...