有前途的已经承诺的图书馆与蓝鸟

Promisifying already promise based library with bluebird

本文关键字:蓝鸟 图书馆 有前途 承诺      更新时间:2023-09-26

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