承诺已经承诺基于蓝鸟的图书馆

时间:2015-03-04 18:06:17

标签: javascript node.js promise bluebird io.js

如果一个库公开了一个基于promise的API,它不是基于bluebird但是没有公开传统的回调API,那么有没有办法实现" promisify"那个图书馆要归还蓝鸟的承诺吗?

目前我只是将承诺返回给bluebird上下文,或者如果我想直接使用任何蓝鸟特定函数,那么我用bluebird的Promise.resolve包装调用。

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

在没有代理的情况下,是否有理智的方法吗?

1 个答案:

答案 0 :(得分:3)

使用promisifier选项

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