Можете ли вы провалить Javascript Promise из обработчика успеха? - PullRequest
0 голосов
/ 27 февраля 2019

Я сомневаюсь, что это особенность Обещаний JS, но у меня есть Обещание, которое может разрешаться красиво, но все же содержать ошибочные данные (т. Е. Нулевое значение в неудачном месте).Я хочу, чтобы ошибочные данные передавались через ту же функцию сбоя Promises, если это нулевое значение есть.

Мне интересно, есть ли способ не выполнить обещание из собственного обработчика успеха?

1 Ответ

0 голосов
/ 27 февраля 2019

С then:

someAsyncTask()
  .then(
    data => {
      if (!data) {
        throw new Error('Bad data') // Or, return Promise.reject(...)
      }
    },
    () => {
      // If you need logic to handle when someAsyncTask rejects
      // AND you want to continue to the next rejection handler,
      // (in this case the catch), you'll need to either `throw`
      // an error here or `return Promise.reject()`
    }
  )
  .catch(
    err => {
      // err.name === 'Error'
      // err.message === 'Bad data'
    }
  )

С async/await:

(async () => {
  try {
    const data = await someAsyncTask()
    if (!data) {
      throw new Error('Bad data')
    }
  } catch (err) {
    // err.name === 'Error'
    // err.message === 'Bad data'
  }
})()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...