如何promisify我使用NodeJS蓝鸟创build一个正则函数?

我第一次用Mongoose方法调用testing了Bluebird。 这很容易,只需要做Promise.promisifyAll(myObj) ,然后调用myObj.methodAsync

但是当我试图在没有mongoose的情况下实现它时,我不知道该怎么做,例如:

 function Foo(){} Foo.prototype.test = function(c,cb){ cb(new Error(),{a:1, b:2, c:c}); }; module.exports = new Foo(); 

这会引发这个错误。

未处理的拒绝(<{“a”:1,“b”:2,“c”:true}>,没有堆栈跟踪)。

这是要catch ,我可以使用它没有错误。

任何人都知道如何实现我的方法来与承诺实现良好的工作?

你的callback是返回new Error() ,只需使用cb(null, {a:1, b:2,c:c});

在节点callback中,callback的第一个参数是一个可选的错误。 如果在第一个参数中返回参数,则表示该function失败。 promisify只是把你的函数包装在一个promise中,当你的函数返回的时候,如果它在第一个位置看到一个错误,它就会拒绝这个promise。

你的函数按照写法完美工作,但是在同步土地上相当于以下几点:

function alwaysThrows() { throw new Error() }