当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Node.js proces 'unhandledRejection'事件用法及代码示例


事件:'unhandledRejection'

历史
版本变化
v7.0.0

不处理 Promise 拒绝已被弃用。

v6.6.0

未处理的Promise 拒绝现在将发出进程警告。

v1.4.1

添加于:v1.4.1


参数

每当 Promise 被拒绝并且在事件循环的一个轮次中没有错误处理程序附加到 Promise 时,就会发出 'unhandledRejection' 事件。使用 Promises 进行编程时,异常被封装为 "rejected promises"。可以使用 promise.catch() 捕获和处理拒绝,并通过Promise 链传播。 'unhandledRejection' 事件对于检测和跟踪被拒绝但尚未处理的承诺很有用。

import process from 'node:process';

process.on('unhandledRejection', (reason, promise) => {
  console.log('Unhandled Rejection at:', promise, 'reason:', reason);
  // Application specific logging, throwing an error, or other logic here
});

somePromise.then((res) => {
  return reportToUser(JSON.pasre(res)); // Note the typo (`pasre`)
}); // No `.catch()` or `.then()`const process = require('node:process');

process.on('unhandledRejection', (reason, promise) => {
  console.log('Unhandled Rejection at:', promise, 'reason:', reason);
  // Application specific logging, throwing an error, or other logic here
});

somePromise.then((res) => {
  return reportToUser(JSON.pasre(res)); // Note the typo (`pasre`)
}); // No `.catch()` or `.then()`

以下也将触发 'unhandledRejection' 事件被发出:

import process from 'node:process';

function SomeResource() {
  // Initially set the loaded status to a rejected promise
  this.loaded = Promise.reject(new Error('Resource not yet loaded!'));
}

const resource = new SomeResource();
// no .catch or .then on resource.loaded for at least a turnconst process = require('node:process');

function SomeResource() {
  // Initially set the loaded status to a rejected promise
  this.loaded = Promise.reject(new Error('Resource not yet loaded!'));
}

const resource = new SomeResource();
// no .catch or .then on resource.loaded for at least a turn

在此示例情况下,可以将拒绝作为开发人员错误进行跟踪,这通常是其他 'unhandledRejection' 事件的情况。为了解决此类故障,可以将非操作 .catch(() => { }) 处理程序附加到 resource.loaded ,这将阻止发出 'unhandledRejection' 事件。

相关用法


注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品  'unhandledRejection'事件。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。