Promise的UnhandledPromiseRejectionWarning问题

2023-11-02

在封装Nodejs对MySQL的CRUD API的时候遇到了UnhandledPromiseRejectionWarning提示,查询了解到这是Node.js 6.6.0中增加的一个特性:对 Promise 中未处理的 rejection 默认会输出 UnhandledPromiseRejectionWarning 提示。

先看看我原来的code:

new Promise((resolve, reject)=>{
	if(2>1) reject('foo')
	resolve('bar')
})

也就是说,如果你定义的Promise没有进行Catch处理Rejection这种情况,就会有这个提示,解决方法有几个:

  1. 直接用resolve来返回错误代码而不用reject

    反正最后promise都要返回点什么,用reject还是resolve有什么区别呢,我只要在用的时候根据返回的对象去主动判断这个promise是否是成功的也能达到一样的效果。

    new Promise((resolve, reject)=>{
    	if(2>1) resolve({status: 0, msg: "foo"})
    	resolve({status: 1, msg: "bar"})
    })
    
  2. 直接在Promise里用空函数处理

    new Promise((resolve, reject)=>{
        if(2>1) reject("foo")
        resolve("bar")
    }).catch(()=>{})
    
  3. 用node process的全局unhandledRejection事件来处理

    process.on('unhandledRejection', error => {
     console.log('我帮你处理了', error.message);
    });
    
    new Promise((resolve, reject)=>{
       if(2>1) reject("foo")
       resolve("bar")
    })
    

    注意,这种情况下,全局的unhandledRejection事件会优先处理这个错误,也就是像第二种在Promise里用Catch处理是不会生效的。

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

Promise的UnhandledPromiseRejectionWarning问题 的相关文章

随机推荐

  • python计算高德地图距离和面积

    python计算高德地图距离和面积 因为项目中经常使用高德的距离和面积计算组件 但是高德并未公布计算逻辑 这就导致项目中数据出问题时不知道该如何去定位 因此花费了1天时间把距离计算和面积计算用python语言整理了出来 距离计算公式 fro
  • VUE首屏加载loading效果

    在使用乾坤微前端框架中 遇见图片资源路径存在访问问题 在不搭CDN的情况下 使用base64方式将图片资源打入代码 这样会导致包体积过大 加载时间长 所以加了一个loading效果 1 在index html入口增加 loading li
  • @Profile使用及SpringBoot获取profile值

    之前开发用过 maven 的环境隔离 现在使用springboot的 Profile功能 发现spring体系真的大到我只是学习了皮毛 相比面试问的 IOC bean的作用域等 突然觉得很可笑 官方文档关于 Profile 的使用 http
  • 删除两个字典中非公共的键和值

    删除两个字典中非公共的键和值 需求 对比两个字典 找出公共元素 将非公共元素删除 dict1 dict2 res for i in dict1 if i not in dict2 print i del dict1 i res append
  • Vue3项目中使用TypeScript

    单文件用法 在单文件组件中使用 TypeScript 需要在 小结 注意 当 script 中使用了 ts 模板 template 在绑定表达式时也支持ts 如果在表达式中不指名类型时 编译器会报警告提示 正确写法 表达式指定类型 组合式A
  • 一文说清楚c++模板Template的用法

    一 引言 模板 Template 指c 程序设计语言中采用类型作为参数的程序设计 二 函数模板 1 通用格式 函数模板定义格式 template
  • Git:同步他人的远程仓库至自己的Git服务器并自动定时更新

    昨天晚上将2015年一篇不负责的Git服务器搭建的教程更新了一下 详见 在CentOS下搭建自己的Git服务器及使用nginx配置gitweb面板 今天折腾了一些本地的项目 倒是可以了 现在的需要是 将远程的仓库 同步一份到自己的git服务
  • C#复习题1(含答案及解析)

    1 单选题 下面有关for循环的正确描述是 A for循环只能用于循环次数已经确定的情况 B for循环的执行流程是先执行循环体语句 后判断表达式 C 在for循环中 表达式1和3可以省略 但表达式2是不能省略 D for循环的循环体中 可
  • JVM黑马版:笔记、应用、速查

    前言 由于工作中时常和JVM打交道 但是对JVM的体系缺乏系统深入了解 日前跟随b站上黑马程序猿的课程成体系地学习了JVM 结合工作中的实践写就了此笔记 黑马原视频地址 https www bilibili com video BV1yE4
  • 无域名家庭异地组网 Headscale +自建 DERP 中继服务器

    参考资料 Headscale 自部署 Tailscale 服务端 泠泫凝的异次元空间 lxnchan cn 20条消息 比 Tailscale 更好的内网穿透方案 Headscale 米开朗基杨的博客 CSDN博客 156条消息 自建 DE
  • Microsoft Access database engine 2010 (Chinese (Simplif... 您不能安装64位版本的Microsoft Access 2010 数据库引擎

    问题 Microsoft Access database engine 2010 Chinese Simplif 您不能安装64位版本的Microsoft Access 2010 数据库引擎 因为您当前已安装32位的offce 产品 若要安
  • Python render_notebook()画图不显示

    关注微信公共号 小程在线 关注CSDN博客 程志伟的博客 使用jupyter lab画图 render notebook 画图不显示 解决方法 from pyecharts globals import CurrentConfig Note
  • p值小于0.05拒绝还是接受_数据科学20

    1 假设检验 假设检验用来判断样本与样本 样本与总体的差异是由抽样误差引起还是本质差别造成的统计推断方法 零假设H0 差异是由抽样误差引起的 一般形式是假定参数等于某个固定值 如假设组间差异为0 回归系数为0等 备择假设H1 存在本质差异
  • 伺服电机脉冲控制方式

    伺服电机脉冲控制方式 伺服电机控制方式有脉冲 模拟量和通讯控制这三种 在不同的应用场景下 该如何确定选择伺服电机控制方式 1 伺服电机脉冲控制方式 在一些小型单机设备 选用脉冲控制实现电机的定位 应该是最常见的应用方式 这种控制方式简单 易
  • Django,Flask ,FastAPI 怎么选?

    阅读大约需要 4 5 分钟 首先我们达成一个共识 框架是用来帮助我们提升效率 节省时间 避免处理那些低级细节的 如果能达到这个目标 就是一个合适的框架 选择合适的框架 会事半功倍 Python 领域 开发 Web 应用程序的三个主流框架是
  • 面试准备:Java常见面试题汇总(一)

    面试准备 Java常见面试题汇总 一 面试准备 Java常见面试题汇总 二 面试准备 Java常见面试题汇总 三 文章目录 1 面向对象的特点 特性有哪些 补充 Java的多态是编译时多态还是运行时多态 2 接口和抽象类的相同点和不同点 3
  • cin输入错误类型导致的死循环

    项目场景 温故而知新 C 学习cin函数 循环读取数据 问题描述 cin函数读取到错误的数据类型时 导致跳过之后所有的cin操作 导致陷入死循环 void main while 1 int a 1 cout lt lt 请输入手机号 cin
  • 转:Linq基础学习

    本文为转摘博客园大牛文章之一 原文地址 http www cnblogs com foundation archive 2009 01 05 1369371 html 目录 1 LINQ查询结果集 1 2 System Array 数组 1
  • Density 计算公式

    Density 又称Utilization 计算公式如下 leaf cell 面积跟可用总面积的计算 受多种因素影响 通常leaf cell 包括std cell 跟hard macro 在计算Density 的时候 如果hard macr
  • Promise的UnhandledPromiseRejectionWarning问题

    在封装Nodejs对MySQL的CRUD API的时候遇到了UnhandledPromiseRejectionWarning提示 查询了解到这是Node js 6 6 0中增加的一个特性 对 Promise 中未处理的 rejection