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错误函数运行“错误”的值为空。 任何想法会导致什么?

谢谢!

rejectfunction只有一个参数,原因。 所以,当你打电话给:

 reject(null, err); 

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

 reject(err);