什么是 promise-rejected
promise-rejected 是一个 npm 包,用于检测 Promise 是否被正确地处理了拒绝的情况。在 Node.js 10.0.0 版本之后,Promise 已经内置了 unhandledRejection
和 rejectionHandled
事件,但这些事件不够直观,因此就出现了这个包。
使用 promise-rejected 可以避免 Promise 没有被正确处理而导致的未捕获异常。
如何安装
通过 npm 安装:
npm install promise-rejected --save-dev
如何使用
基本用法
在主要入口文件中引入 promise-rejected:
const promiseRejected = require('promise-rejected');
在 Promise 拒绝处理函数中,使用 promiseRejected 函数:
promiseRejected.on('reject', (reason, promise) => { console.error(`Promise rejected without handling:\n${reason}\n${promise}`); // console.error('Promise rejected:', reason); // 通过 throw 进行异常抛出 throw reason; });
具体操作可根据自己的需要进行参数修改。
例子
以下代码演示了一个 Promise 未被处理的情况:
-- -------------------- ---- ------- ----- --------------- - ---------------------------- ----- - - --- ----------------- ------- -- - ------------- -- - ---------- -------------- --------- ---------- -- ------ --- -- ------- ------------ ---------------------------- ----- ------------- -- - --------- -- - ----------------------- --- -- ------
在控制台输出:
Promise rejected without handling: Error: Promise rejection error. [object Promise]
详细介绍
Promise 对象一旦被拒绝,如果没有正确地处理,将会抛出一个未被捕获的异常。在一定的业务场景下,未被捕获的异常会导致程序崩溃。
Node.js 在 10.0.0 版本之后,提供了 unhandledRejection
和 rejectionHandled
两个事件,用于监听 Promise 对象的拒绝操作。但这些事件机制并不能完全覆盖所有情况,并且使用方式比较繁琐。
针对此类问题,就有人提出了 promise-rejected 这个 npm 包。
通过在主要入口文件中引入 promise-rejected,然后在 Promise 拒绝时使用 promiseRejected 函数进行处理,即可避免未处理拒绝状态的异常。
在具体的业务场景中,可以根据自己的实际情况进行参数设置。
结论
使用 promise-rejected 后,可以避免 Promise 未被正确处理而导致的未捕获异常,从而提高程序的稳定性和可维护性。
代码示例见:promise-rejected-demo。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005574f81e8991b448d4473