使用 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));
}
}
});
如果一个库公开了一个基于 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));
}
}
});