Moh*_*yeb 1 javascript node.js promise async-await
我整天脑子里都在想这个问题,我是一个初学 nodejs 开发人员,我想知道什么时候我应该把我的代码包装在一个使用 async/await 的承诺中,什么时候我不应该......让我们举个例子,我有两个文件:
索引.js
var mailer = require('../mailer')
var mailOptions = mailer.mailOptions(......)
mailer.sender(mailOptions)
Run Code Online (Sandbox Code Playgroud)
邮件程序.js:
module.exports.mailOptions = (.......) => {
....
}
module.exports.sender = (mailOptions) => {
transporter.sendMail(mailOptions, callback(err, info))
}
function callback(err, info) {
}
Run Code Online (Sandbox Code Playgroud)
我应该将 sender 函数包装在一个承诺中,像这样调用它:
await mailer.sender(mailOptions)
Run Code Online (Sandbox Code Playgroud)
或者我的例子很好,我不需要承诺?希望你明白我的意思
编辑:
我正在使用 npm 中的 nodemailer 包:https ://www.npmjs.com/package/nodemailer
根据文档,如果没有给出回调,Node Mailer 将返回一个承诺(https://nodemailer.com/usage/)。这使得一切都非常好用。例如,您可以在 mailer.js 中执行此操作:
// just return the promise from sendMail()
module.exports.sender = (mailOptions) => transporter.sendMail(mailOptions)
Run Code Online (Sandbox Code Playgroud)
然后你可以使用它 withawait或 withthen()
try{
let info = await mailer.sender(mailOptions)
console.log(info.messageId) // etc
} catch(err){
console.log("Error:", err)
}
Run Code Online (Sandbox Code Playgroud)
或者
mailer.sender(mailOptions)
.then(info => console.log(info.messageId)
.catch(err => console.log("Error:", err)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2298 次 |
| 最近记录: |