async/await中reject的问题
promise 返回的 resolve 对象可能用 await 去接,
但是 reject 无法用 await 接收到,所以要用 try catch 去处理
例如发送邮件的接口设置:
async function verify(body){
//发送邮件服务器的配置
let transporter = nodeMailer.createTransport({
service:'qq',
auth:{
user:SMTP_CONF.user,
pass:SMTP_CONF.pass
}
})
//用户填写的邮件信息,也就是收邮件的信息
let ko = {
code:SMTP_CONF.code(),
expire:SMTP_CONF.expire(),
email:body.email,
user:body.username,
}
//发送邮件的内容
let mailOptinons = {
from:`'认证邮件'<${SMTP_CONF.user}>`,
to:ko.email,
subject:'<实验验证注册码>',
html:`您的邀请码是${ko.code}`
}
let mypromise = new Promise((resolve,reject)=>{
transporter.sendMail(mailOptinons,(err,info)=>{
if(err){
reject(err);
}
resolve(info);
})
})
return mypromise;
}
调用函数的时候用try catch
router.post('/verify',async(ctx,next)=>{
let result = await verify(ctx.request.body).catch(err=>{
ctx.body = new ErrorModel('发送失败');
})
if(result){
ctx.body = new SuccessModel('验证码已发送,可能会有延时,有效期1分钟');
}
})
async/await中reject的问题的更多相关文章
- [译]async/await中阻塞死锁
这篇博文主要是讲解在async/await中使用阻塞式代码导致死锁的问题,以及如何避免出现这种死锁.内容主要是从作者Stephen Cleary的两篇博文中翻译过来. 原文1:Don'tBlock o ...
- 关于C#中async/await中的异常处理(下)-(转载)
上一篇文章里我们讨论了某些async/await的用法中出现遗漏异常的情况,并且谈到该如何使用WhenAll辅助方法来避免这种情况.WhenAll辅助方法将会汇总一系列的任务对象,一旦其中某个出错,则 ...
- 关于C#中async/await中的异常处理(上)-(转载)
在同步编程中,一旦出现错误就会抛出异常,我们可以使用try…catch来捕捉异常,而未被捕获的异常则会不断向上传递,形成一个简单而统一的错误处理机制.不过对于异步编程来说,异常处理一直是件麻烦的事情, ...
- [译]async/await中使用阻塞式代码导致死锁 百万数据排序:优化的选择排序(堆排序)
[译]async/await中使用阻塞式代码导致死锁 这篇博文主要是讲解在async/await中使用阻塞式代码导致死锁的问题,以及如何避免出现这种死锁.内容主要是从作者Stephen Cleary的 ...
- 关于C#中async/await中的异常处理(上)
关于C#中async/await中的异常处理(上) 2012-04-11 09:15 by 老赵, 17919 visits 在同步编程中,一旦出现错误就会抛出异常,我们可以使用try…catch来捕 ...
- [译]async/await中使用阻塞式代码导致死锁
原文:[译]async/await中使用阻塞式代码导致死锁 这篇博文主要是讲解在async/await中使用阻塞式代码导致死锁的问题,以及如何避免出现这种死锁.内容主要是从作者Stephen Clea ...
- .NET Core学习笔记(3)——async/await中的Exception处理
在写了很多年.NET程序之后,年长的猿类在面对异步编程时,仍不时会犯下致命错误,乃至被拖出去杀了祭天.本篇就async/await中的Exception处理进行讨论,为种族的繁衍生息做出贡献……处理a ...
- C#中async/await中的异常处理
在同步编程中,一旦出现错误就会抛出异常,我们可以使用try-catch来捕捉异常,而未被捕获的异常则会不断向上传递,形成一个简单而统一的错误处理机制.不过对于异步编程来说,异常处理一直是件麻烦的事情, ...
- .NET异步操作学习之一:Async/Await中异常的处理
以前的异常处理,习惯了过程式的把出现的异常全部捕捉一遍,然后再进行处理.Async/Await关键字出来之后的确简化了异步编程,但也带来了一些问题.接下来自己将对这对关键字进行学习.然后把研究结果放在 ...
随机推荐
- 《ucore lab2》实验报告
资源 ucore在线实验指导书 我的ucore实验代码 练习1:实现 first-fit 连续物理内存分配算法 题目 在实现first fit 内存分配算法的回收函数时,要考虑地址连续的空闲块之间的合 ...
- Mac上Docker的安装
安装 安装包安装 由于历史原因, 本人使用的是安装安装的方式, 这也是很多Windows用户的习惯. 下载地址: https://download.docker.com/mac/stable/Dock ...
- vue之$event获取当前元素的节点
<p @click = “clickfun($event)”>点击</p> methods: { clickfun(e) { // e.target 是你当前点击的元素 // ...
- kill 掉 占据端口的进程
netstat -anp | grep 80kill -9 进程号
- [转帖]PCIe 6.0 v0.3版本草案已完稿:2021年转正、x16带宽飙至128GB/s
PCIe 6.0 v0.3版本草案已完稿:2021年转正.x16带宽飙至128GB/s https://www.cnbeta.com/articles/tech/899389.htm 硬件发展突飞猛进 ...
- linux服务器安装tomcat
linux服务器安装tomcat 准备: 下载一个tomcat,官网连接:http://tomcat.apache.org/ 版本选择合适的 安装tomcat之前要先安装Java jdk 可以参考我的 ...
- leetcode 2019.10.29 首次破百
刷题首次破百,记录一下自己成长的历程. 仍在路上,会慢慢变强的~
- 安装python的pip库setup.py出现报错的解决过程
错误起因: 第一次安python3.72的时候,直接去官网下了压缩包,解压后也没有exe文件.环境也是手动配置,在之后安装Pycharm的时候,系统找不到解释器,手动加上. 错误经过: 等写程序用到i ...
- PB之取下来列修改后的值(AcceptText)
AcceptText()功能 将“漂浮”在数据窗口控件上编辑框的内容放入到数据窗口控件的当前项中(主缓区中).在将数据放入到当前项之前,编辑框中的数据必须通过有效性规则检查语法 dwcontrol. ...
- Mybatis配置、逆向工程自动生成代码(CRUD案例)
目的: mybatis简介 搭建mybatis环境 基于SSM逆向工程的使用 Mybatis增删改查案例 mybatis简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及 ...