在 Node.js 7 中抑制 UnhandledPromiseRejectionWarning 的正确方法是什么?

2024-01-12

在 Node.js 中,我有一个仅包含一个函数的模块。该函数返回 Promise,并且该 Promise 可能会被拒绝。我仍然不想强迫该模块的所有用户明确处理拒绝。在某些情况下,根据设计,忽略返回的承诺是有意义的。另外,我不想剥夺模块用户处理承诺拒绝的能力。

正确的做法是什么?

升级到 Node.js 7.1.0 后,我所有忽略拒绝处理的单元测试都显示以下警告:

(node:12732) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: try to throw an error from unit test
(node:12732) DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

防止将来 Node.js 进程终止的正确方法是什么DeprecationWarning描述?


一般来说,使用像 bluebird 这样的自定义库,您可以仅从代码中抑制拒绝,但在其他地方都无法抑制。本机承诺还不能做到这一点。

但是,您可以通过为其添加 catch 处理程序来手动抑制承诺。

 function yourExportedFunction() {
     const p = promiseThatMightRejectFn(); 
     p.catch(() => {}); // add an empty catch handler
     return p;
 }

这样你就明确地忽略来自 Promise 的拒绝,因此它不再是未处理的拒绝,而只是被压抑的拒绝。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Node.js 7 中抑制 UnhandledPromiseRejectionWarning 的正确方法是什么? 的相关文章

随机推荐

  • WCF服务参考生成自己的契约接口,不会重用我的

    我的第一个问题希望它合适 共享接口组装 我有一个 共享 程序集 它有一个接口 我们称之为它IDocRepository 它标有 ServiceContract 并且有几个 OperationContract 标记方法 WCF 实现组件 我有
  • 哪些 Java 库可以接受 HTTP 标头解析? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 哪些 Java 库解析 HTTPAccept header 你应该阅读这篇文章 http www xm
  • React Native - 如何从推送通知打开路线

    我在用着react navigation and react native push notification 我怎样才能打开某个StackNavigator s屏幕输入onNotification打回来 应该在以下情况下工作 应用程序已关
  • 是否可以使用 Facebook API + PHP 从我拥有的封闭群组中获取 Facebook 提要、点赞和评论

    我想构建一个 Web 应用程序 使用 Facebook API PHP 从我拥有的封闭群组获取提要 点赞和评论 我看到我可以使用这个 Graph API 接口获取信息 开始阅读 facebook 文档 并开始思考我实际上不能这样做 http
  • HttpWebRequest 中“无法连接到远程服务器失败”

    我正在使用 VSTS 2008 C Net 3 5 开发控制台应用程序 并将请求发送到另一台服务器 Windows Server 2008 上的 IIS 7 0 我发现当请求线程数很大 例如 2000 个线程 时 客户端在调用 respon
  • 核心数据独特属性

    是否可以使 Core Data 属性唯一 即两个 MyEntity 对象不能具有相同的 myAttribute 我知道如何以编程方式强制执行此操作 但我希望有一种方法可以使用 xcode 中的图形数据模型编辑器来执行此操作 我正在使用 iP
  • Rails 3 中的多级嵌套布局

    我有一个带有全局应用程序布局文件的应用程序application html haml 然后 我有多个 控制器堆栈 用于我们的主站点 我们的管理门户和我们的业务站点 对于其中每一个 控制器都位于一个模块内 并且都继承自同一个模块BaseCon
  • java.io.FileNotFoundException:(权限被拒绝)

    我想读取 Vista 上我的文档文件夹中的文件 该字段确实存在于指定位置 但在尝试打开文件的输入流时仍然收到以下错误 java io FileNotFoundException Permission denied at java io Fi
  • Angular 2嵌套路由解析执行

    例如 如果我有以下路线组织 const appRoutes Routes path component AppComponent resolve app AppResolver children path component NestedC
  • 多个线程调用同一个函数

    假设我们有多个线程都调用同一个函数 def foo do stuff end 100 times do i Thread new do foo end end 如果当前有两个或多个线程foo 它们是否共享相同的局部变量foo 这涉及到我的第
  • Android MediaPlayer 无法在运行 Android 5.1.1 的 Galaxy S6 上播放

    我发现运行 Android 5 1 1 的 Galaxy S6 特有的问题 我正在使用 MediaPlayer 播放音频流 并且在设备和 Android 版本的此特定配置上 它无法到达 onPrepared 方法 因此永远不会播放 Over
  • 如何发布具有多个选定值的 HTML 列表框的选择

    我在 HTML 表单上有一个带有 提交 按钮的列表框 列表框启用了多项选择 我可以在列表框中选择多个值 但我不知道如何确定提交表单时选择了哪些值 另外 我使用 JavaScript 动态地将用户生成的值添加到列表框中 并且我希望能够在表单提
  • 如何检测用户何时关闭 Admob 中的插页式广告?

    我最近将广告移至新版本 现在使用 com google android gms ads 但我意识到我现在缺少一些非常重要的东西 我曾经能够使用 OnDismissScreen 检测用户何时关闭插页式广告 但现在看来这不再是一个选项 我曾经做
  • 通过套接字发送图像流问题 - Android

    我已经实现了一个应用程序 它使用 SP 相机拍照并通过套接字将其发送到服务器 我使用以下代码读取本地存储的图像文件 并通过套接字以连续的块形式发送它 FileInputStream fileInputStream new FileInput
  • 仅复制并粘贴值和格式 - Google 脚本

    我想仅复制和粘贴值和格式 而不是公式 E G A1是动态文本 A1 测试 A2 A1 我想使用一个脚本 激活时它将 A2 格式和文本复制到 A3 我尝试使用 formatOnly true contentsOnly true 但它不断复制公
  • 为什么 std::swap 被移至

    Why has std swap已移至
  • 在 pgAdmin (PostgreSQL) 中查看数据的简单方法

    我已经搜索这个问题一个多小时了 没有任何线索 在 Heidi SQL 用于 MySQL 中 我只需点击几下即可打开任何表来查看其数据 但在 pgAdmin 中 我必须折叠许多子文件夹才能做到这一点 database Schemas publ
  • ComponentDidUpdate SetState ReactJS无限循环

    尽管有很多具有相同主题的问题 但我无法得到我的问题的答案 Problem 我有一个选择下拉菜单 单击该按钮后 我会调用一个 Api 来获取一些关键值 我将这组键值输入字段视为一个组件 因此 每次选择下拉菜单的 onChange 时 我都会使
  • 如何在php中使用css样式

    我使用 php 显示来自 mysql 的数据 这是我的 CSS 语句
  • 在 Node.js 7 中抑制 UnhandledPromiseRejectionWarning 的正确方法是什么?

    在 Node js 中 我有一个仅包含一个函数的模块 该函数返回 Promise 并且该 Promise 可能会被拒绝 我仍然不想强迫该模块的所有用户明确处理拒绝 在某些情况下 根据设计 忽略返回的承诺是有意义的 另外 我不想剥夺模块用户处