javascript - (bluebird .tap) 无法返回数据,做错了

标签 javascript ecmascript-6 promise bluebird

我愿意:

 return new bluebird((resolve) => {

  bluebird.resolve()
  .tap(saveExcelFiles)
  .tap(...)
  .tap(() => {
      return getZip().then((rows) => {
        resolve(rows) // this outer bluebird helps me
        return rows;
      });
    })
  ;
  
});

如何返回所有数据(每次点击)或仅在一个 bluebird 包装中返回最后一次点击。

附注我需要排序(一点一点,一点一点)

最佳答案

.tap 明确表示“忽略返回值”,如果您需要返回值 - 使用标准 .then:

.then(() => {
  return getZip().then((rows) => {
    // Nothing outer.
    return rows;
  });
});

或者更紧凑:

.then(getZip); // that's it!

此外,您应该返回 promise 链而不是 explicit construction :

return saveExcelFiles().tap(...).then(getZip);

对于整个函数来说应该足够了。

关于javascript - (bluebird .tap) 无法返回数据,做错了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46651405/

相关文章:

javascript - 将单个 Node 插入到链表中,在下一个值处给我循环?

javascript - 我应该如何在 ES6 实例中保留对 'options object' 的引用?

javascript - 如何配置 `direflow-webpack.js`以支持 `sass`文件

javascript - 未处理的 promise 拒绝错误: Can't set headers after they are sent

javascript - 在浏览器中绘制动态圆圈的最佳方法是什么(除了flash)

javascript - 使用 ajax/jquery 验证并提交包含数据和文件的表单

javascript - 升级到 typescript 2 后找不到 (string)、Object、Date、Json 的需要索引

scala - 如何在 `getOrElseComplete` 上执行 `Promise` ?

Typescript:Promise 的子类/扩展:不引用 Promise 兼容的构造函数值

javascript - 使用 ClojureScript 项目中的 Node.js 库