您能否通过其成功处理程序使Javascript Promise失败?

时间:2019-02-27 06:26:15

标签: javascript promise

我怀疑这是JS Promises的功能,但是我有一个Promise可以很好地解决,但仍然包含错误的数据(即,不幸的地方为空值)。我希望错误的数据通过相同的Promises失败函数传递,如果那里有空值的话。

我想知道是否有办法使自己的成功处理程序无法兑现承诺?

1 个答案:

答案 0 :(得分:3)

使用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'
  }
})()