promisifyAll函数中的回调没有堆栈跟踪

时间:2015-10-29 14:52:05

标签: javascript promise bluebird

我使用以下代码来转换此对象

Extraction = {
  phaseone   : require('./phaseone')
  phasetwo   : require('./phasetwo')
  phasethree : require('./phasethree')
};
在承诺中

Promise.promisifyAll(Extraction);

在第一阶段,我正在完成我的所有逻辑(我无法在此处显示:/),最后,当我完成所有操作时,我会调用回调:

var phaseone: function(file, callback) {
    // logic
    callback(result);
};

这应该叫phasetwo,因为我这样打电话:

Extraction.phaseoneAsync(file).then(Extraction.phasetwoAsync);

但所有这一切都在回归:

未处理的拒绝(< [{"存在":true,"路径":" _input / Estapar ...>,没有堆栈跟踪)

这可能是什么?

1 个答案:

答案 0 :(得分:0)

如果你想使用promisify,那么将错误作为第一个参数传递给回调,这就是promisify所期望的:

var phaseone: function(file, callback) {
    // logic
    callback(null, result);
};

但是如果你要总是使用BlueBird,你也可以直接制作你的API承诺,这样你就不必宣传它了:

var phaseone: function(file) {
    return new Promise(function(resolve, reject) {
        // logic
        resolve(result);
    })
};