如何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() }