我们可能会得到错误原因或错误的堆栈(如果存在)以记录在日志(log)中,并在页面/控制台上显示等等,但如何使用传递给处理程序的Promise引用作为第二个参数?
process.on('unhandledRejection', (err, p) => {
console.log(err); // "some reason"
console.log(p); // Promise { <rejected> 'some reason' }
});
我们可能会得到错误原因或错误的堆栈(如果存在)以记录在日志(log)中,并在页面/控制台上显示等等,但如何使用传递给处理程序的Promise引用作为第二个参数?
process.on('unhandledRejection', (err, p) => {
console.log(err); // "some reason"
console.log(p); // Promise { <rejected> 'some reason' }
});
传入Promise引用,以便处理程序可以区分which个Promise被拒绝.错误本身对此没有帮助,事实上,您可能会因为同一个错误而拒绝多个不同的promise ,并且可能会从它们那里得到多个未经处理的拒绝.
现在Promise对象本身并不是特别有用,除了附加处理程序之外,您不能对它做很多事情-而且您已经知道它被拒绝了,并且使用了哪个值.在某些罕见的情况下,Promise可能是某个Promise子类的一个实例,它携带额外的数据,因此未经处理的拒绝在理论上可以使用它;但这是不寻常的.
更相关的是,Promise对象有一个标识,您可以用它来标识拒绝.这一点尤其与rejectionhandled
event有关,它会告诉你,一个被拒绝的、未处理的promise 现在有了一个处理程序.您可以使用Promise作为标识符--例如,作为Map
中的关键字--将其与之前的unhandledrejection
相关联.