【问题标题】:break from promise mapseries打破承诺地图系列
【发布时间】:2019-03-27 13:29:03
【问题描述】:

我有一系列方法,我通过Promise.mapSeries 运行它们:

Promise.mapSeries(functions.map(function => {
    return new Promise((resolve, reject) => {
        function(req, res, function(err) {
            if (success) {
                return something(); //if we here, break mapSeries
            }
            resolve();
        });
    })
}))
.then(() => {
    return something();
})

如何脱离 mapSeries 以防止执行其余功能?

【问题讨论】:

  • 是的,但是抛出异常或编写自定义 mapSeries 看起来根本不是最好的解决方案
  • function => { ... } 幸运的是这不是有效的 JS
  • 为什么要弯腰Array#map去做Array#some的工作? Promise.mapSeries 应该做 Array#map 的工作,只是关于承诺和系列
  • 我需要等待函数执行完毕后再运行。

标签: javascript node.js promise bluebird


【解决方案1】:

由于您正在返回 something(),因此您不会执行 resolve();所以也许尝试解决之前的承诺?

Promise.mapSeries(functions.map(function => {
      return new Promise((resolve, reject) => {
          function(req, res, function(err) {
              if (success) {
                  return Promise.resolve(something()); //if we here, break mapSeries
              }
          });
      })
  }))
  .then(() => {
      return something();
  })

【讨论】:

  • 你总是可以尝试 Promise.Reject 而不是解决。
猜你喜欢
  • 2020-02-23
  • 2015-06-12
  • 2015-10-07
  • 2017-11-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多