破碎的承诺链接在回调函数中

时间:2017-03-31 05:58:22

标签: javascript promise chaining

如何在这里链接承诺:

    .then(resp => {
      if (xxxxx) {
        return nextPromise()
      } else {
        // stop promise chain
        return
      }
    })
    .then(resp => {
       // nextPromise callback function..
    })

我认为回归会阻止链条,但我错了。

1 个答案:

答案 0 :(得分:1)

如果您不想通过抛出错误来破坏链,那么解决方案就是嵌套链:

.then(resp => {
  if (xxxxx) {
    return nextPromise().then(resp => {
      // nextPromise callback function..
    });
  }
})

这仍然允许全局.catch(),您不必在其中明确检查为结束链而抛出的错误。缺点是,如果您有许多这些条件,最终会得到类似于"callback hell"的内容。