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);
我有一系列的承诺,如果其中任何一个抛出错误,它就会冒泡到最上面的承诺——有点像全局错误捕获。
这是我如何设置的简化版本:
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);