我有一系列的 promise ,如果其中任何一个抛出错误,它就会冒泡到最上面的 promise - 有点像全局错误捕获。
这是我如何进行设置的简化版本:
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);
关于javascript - Node.js Bluebird - promise 错误返回为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31572489/