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

时间:2015-07-22 19:38:44

标签: javascript node.js bluebird

我有一系列的承诺,如果它们中的任何一个抛出错误,它就会冒出最高的承诺 - 有点像全局错误捕获。

以下是我如何设置内容的简化版本:

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

由于某种原因,虽然错误功能运行了错误'一片空白。关于会导致这种情况的任何想法?

谢谢!

1 个答案:

答案 0 :(得分:1)

reject函数只接受一个参数,原因。所以,当你致电:

reject(null, err);

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

reject(err);
相关问题