我整天在脑海里有这个问题,我是一个初学者的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)


然后可以将其与awaitthen()一起使用

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)

08-07 22:25