如果一个库公开了一个基于promise-based的API,该API不是基于bluebird的,但没有公开传统的回调API,是否有方法"promiseify"该库以返回bluebird promise?
目前,我要么只将promise返回到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));
}
}
});