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分鍾');
  }
})

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM