async/await中reject的问题

Posted xiaozhumaopao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的问题的主要内容,如果未能解决你的问题,请参考以下文章

Promise,async,await

面试准备async+await的使用与原理

async/await语法总结

async+await一起使用

从嵌套的 async/await 函数中捕获错误

异步编程初探async和await