如果一个库公开了一个基于promise的API,它不是基于bluebird但是没有公开传统的回调API,那么有没有办法实现" promisify"那个图书馆要归还蓝鸟的承诺吗?
目前我只是将承诺返回给bluebird上下文,或者如果我想直接使用任何蓝鸟特定函数,那么我用bluebird的Promise.resolve包装调用。
我相信这可以通过ES2015代理实现,但Node.js™,io.js和Babel都不支持它们。
在没有代理的情况下,是否有理智的方法吗?
答案 0 :(得分:3)
使用promisifier选项
Promise.promisifyAll(lib, {
promisifier: function(fn) {
return function () {
return Promise.resolve(fn.apply(this, arguments));
}
}
});