我有一系列的承诺,如果它们中的任何一个抛出错误,它就会冒出最高的承诺 - 有点像全局错误捕获。
以下是我如何设置内容的简化版本:
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
});
由于某种原因,虽然错误功能运行了错误'一片空白。关于会导致这种情况的任何想法?
谢谢!
答案 0 :(得分:1)
reject
函数只接受一个参数,原因。所以,当你致电:
reject(null, err);
您正在传递null
作为拒绝原因,并且未使用err
参数。将您的代码更改为:
reject(err);