Node.js Bluebird – 承诺错误返回为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 });
由于某些原因,尽pipe错误函数运行“错误”的值为空。 任何想法会导致什么?
谢谢!
reject
function只有一个参数,原因。 所以,当你打电话给:
reject(null, err);
您作为拒绝原因传递null
,并且不使用err
参数。 将您的代码更改为:
reject(err);