NodeJS使用BlueBird来提升现有的API

我有一个非常简单的API,从服务器获取一些数据,做一些处理,然后将其发送到客户端。 我正在尝试“Promisify”这个小模块。 下面是一个例子

var MyModule = function (){} MyModule.prototype.makeRequest = function(requestURL){ //Set request up //Return the promise for the request. return request(requestOptions); } MyModule.prototype.myFunction = function(var1, var2, cb){ var URL = "http://....//"; this.makeRequest(URL) .then(function(data) { //Some processing logic cb(null,data); }) .catch(function(err) { cb(err,null); }) } module.exports = MyModule; 

然后消耗这个模块,我想要做以下…

  var MyModule = new(require('../lib/MyModule')); MyModule.myFunction(var1,var2) .then(function(data) { console.log(data); }).catch(function(err){ console.log(err); }); 

我怎样才能使用BlueBird这个工作? 我一直在试验PromisifyAll()像这样..

 var MyModule = new(require('../lib/MyModule')); var Promise = require("bluebird"); var MyModuleAsync = Promise.promisifyAll(MyModule); 

我的这种做法显然是不正确的,我知道我可以在API中手动创build和返回诺言,但文档build议我不应该这样做。

通过promisifying一个单一的function开始

 var MyModule = new(require('../lib/MyModule')); var Promise = require("bluebird"); var MyModuleAsync = Promise.promisify(MyModule.myFunction, MyModule); MyModuleAsync(var1, var2).then(function(res){ // etc }); 

一旦你得到这个工作,你可以开始思考promisifyAll()