Node.js Bluebird - 承诺错误返回为 null

Node.js Bluebird - promise error being returned as null

我有一系列的承诺,如果其中任何一个抛出错误,它就会冒泡到最上面的承诺——有点像全局错误捕获。

这是我如何设置的简化版本:

function bar() {
    return new Promise(function(resolve,reject) {
        var err = new Error('This is an error');
        err.name = 'Permission';
        return reject(null,err);
    });
}

function foo() {
    return new Promise(function(resolve,reject) {
        bar()
            .then(function(results) {
                return resolve(results);
            })
            .then(null,function(error) {
                console.log('Error caught'); //This shows
                console.log(error); //outputs null
                return reject(error);
            });
    });
}

foo()
    .then(function(results) {
        console.log(results);
    })
    .then(null,function(error) {
        //this never gets reached
    });

由于某些原因,尽管错误函数运行 'error' 的值为空。关于导致这种情况的原因有什么想法吗?

谢谢!

reject 函数只有一个参数,即原因。所以,当你打电话时:

reject(null, err);

您将 null 作为拒绝原因传递并且未使用 err 参数。将您的代码更改为:

reject(err);