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

no stack trace on callback in promisifyAll function

我正在使用以下代码来转动这个对象

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);

但这一切都回来了:

未处理的拒绝(<[{"exists":true,"path":"_input/Estapar...>,无堆栈跟踪)

这可能是什么??

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

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

但是如果你打算一直使用 BlueBird,你还不如直接让你的 API Promise 为基础,这样你就不必承诺它了:

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