将承诺转换为蓝鸟

Tho*_*ggi 50 javascript node.js promise bluebird

我找到了一个使用promises的现有库,但它不使用bluebird.库函数不与所有的额外功能蓝鸟确实喜欢.map().tap().我如何将"正常"或"非蓝鸟"的承诺转换为蓝鸟承诺,蓝鸟提供的所有额外功能?

我尝试将现有的承诺包装起来Promise.promisify,Promise.resolve而且似乎都没有效果.

Ber*_*rgi 76

使用Promise.resolve- 它将采取任何可能的,如来自其他实现的承诺,并将其同化为Bluebird承诺.

请记住,"解决"一词可能具有误导性,它并不意味着与"履行"相同,但也可以遵循另一个承诺并解决其结果.

  • 示例: var Promise = require("bluebird"); Promise.resolve(nonBluebirdPromise).reflect() Reflect 只是一个 bluebird 函数,否则将不可用 (3认同)

Tho*_*ggi 16

如果你想将promise转换为bluebird promise什么都不解决然后返回,customPromise你就可以访问链中的所有bluebirds自定义方法.

Promise.resolve().then(function(){
  return customPromise()
})
Run Code Online (Sandbox Code Playgroud)

要么

Promise.resolve(customPromise())
Run Code Online (Sandbox Code Playgroud)

  • `Promise.resolve(customPromise())`应该足够了,不需要额外的`.then`. (8认同)
  • @LeonidBeschastny如果你需要防范同步异常,那么`Promise.try`也会起作用 (4认同)