我整天在脑海里有这个问题,我是一个初学者的nodejs开发人员,我想知道我什么时候应该将代码包装在使用async / wait的承诺中,何时不应该...
让我们举个例子,我有两个文件:
index.js
var mailer = require('../mailer')
var mailOptions = mailer.mailOptions(......)
mailer.sender(mailOptions)
mailer.js:
module.exports.mailOptions = (.......) => {
....
}
module.exports.sender = (mailOptions) => {
transporter.sendMail(mailOptions, callback(err, info))
}
function callback(err, info) {
}
我应该将sender函数包装在一个可以这样调用的诺言中吗:
await mailer.sender(mailOptions)
还是我的榜样很好,我不需要承诺?
希望你明白我的意思
编辑:
我正在使用npm的nodemailer软件包:
https://www.npmjs.com/package/nodemailer
最佳答案
根据文档,如果未提供回调(https://nodemailer.com/usage/),Node Mailer将返回一个Promise。这使得一切都非常好用。例如,您可以在mailer.js中执行此操作:
// just return the promise from sendMail()
module.exports.sender = (mailOptions) => transporter.sendMail(mailOptions)
然后可以将其与
await
或then()
一起使用try{
let info = await mailer.sender(mailOptions)
console.log(info.messageId) // etc
} catch(err){
console.log("Error:", err)
}
要么
mailer.sender(mailOptions)
.then(info => console.log(info.messageId)
.catch(err => console.log("Error:", err)