javascript - 你能让 Javascript Promise 的成功处理程序失败吗?

标签 javascript promise

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

我想知道是否有办法让其自己的成功处理程序失败?

最佳答案

然后:

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 () => {
  try {
    const data = await someAsyncTask()
    if (!data) {
      throw new Error('Bad data')
    }
  } catch (err) {
    // err.name === 'Error'
    // err.message === 'Bad data'
  }
})()

关于javascript - 你能让 Javascript Promise 的成功处理程序失败吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54899306/

相关文章:

javascript - 然后在里面调用异步函数

javascript - 统计命令显示嵌入中未定义的数据

javascript - 如何对依赖于 Promise 的 AngularJS Controller 进行单元测试?

node.js - Mongoose promise 错误

javascript - 异步问题,无法在 .then 之后运行 shelljs 命令

javascript - 有没有一种方法可以结合 Bluebird 的 `then` 和 `catch` 功能?

javascript - 在 Android 应用中添加 css 和 javascript

javascript - 替换文本 javascript .append()

javascript - JQuery:我无法对从 AJAX 动态加载的内容使用函数

javascript - 从树结构中抓取所有 "names"