我目前正在使用带有fb npm包的Bluebird。
我设法让fb库返回数据。但是,数据被捕获为错误,而不是传递给then()
方法。
var Promise = require('bluebird'),
fb = Promise.promisifyAll(require('fb'));
fb.apiAsync(endPoint, options)
.then(function(response) {
console.log(response); // This doesn't get called
}, function(e) {
console.log(e); // The facebook response gets returns as part of the error instead
});
我是否以错误的方式使用承诺?到目前为止,我已经尝试按照Bluebird页面上的文档进行操作。
答案 0 :(得分:3)
默认情况下,bluebird中的promisify
函数要求回调API为:
查看npm上的fb
包,我们可以看到回调使用以下形式:
function (res) { ...}
回调函数的第一个参数是结果,并且错误值似乎没有参数。这意味着此API违反规则#2和#3。幸运的是,bluebird允许用户编写自定义的promisifier函数,有关详细信息,请参阅bluebird API。