使用 bluebird 承诺已经基于承诺的库

Promisifying already promise based library with bluebird

如果一个库公开了一个基于 promise 的 API 而不是基于 bluebird 但不公开传统的回调 API,有没有办法 "promisify" 该库return蓝鸟承诺?

目前我只是 return 对 bluebird 上下文的承诺,或者如果我想直接使用任何 bluebird 特定的函数,那么我用 bluebird 的 Promise.resolve.

包装调用

我相信这可以通过 ES2015 代理实现,但 Node.js™、io.js 和 Babel 都不支持它们。

有没有 合理 的方法来做到这一点而不需要代理?

使用 promisifier 选项

Promise.promisifyAll(lib, {
     promisifier: function(fn) {
         return function () {
              return Promise.resolve(fn.apply(this, arguments));
         }
     }
});