Javascript 一次发两封信?
我的问题很简单——有时其中一封邮件没有发送。我的代码:Javascript 一次发两封信?,javascript,node.js,nodemailer,Javascript,Node.js,Nodemailer,我的问题很简单——有时其中一封邮件没有发送。我的代码: api.post('/sendMail', (req, res) => { transporter.sendMail(someFunc(), (err) => { // send mail to one user if (err) { res.status(500).send('error'); } res.status(200).send('success');
api.post('/sendMail', (req, res) => {
transporter.sendMail(someFunc(), (err) => { // send mail to one user
if (err) {
res.status(500).send('error');
}
res.status(200).send('success');
});
transporter.sendMail(someFunc(), (err) => { // send mail to second user
if (err) {
res.status(500).send('error');
}
res.status(200).send('success');
});
});
如上所述-有时其中一封邮件未发送
问题:负责发送第二封邮件的代码是否应该在第一封邮件的回调中?或者完全可以像上面的代码那样将它们分开?谢谢 在很多情况下,代码可能会失败。您不能让Express使用两种不同的状态代码进行应答,您必须决定发送哪种代码和应答 负责发送第二封邮件的代码应该在第一封邮件的回调内吗 是的,这可能是一种方式,但有两个缺点 1) 它的伸缩性不好(四封、三封、上万封电子邮件……) 2) 它不能很好地扩展性能,因为这样会一封接一封地发送电子邮件,您可以将它们并行发送: 为此,承诺发送邮件:
const sendMail = () => new Promise((resolve, reject) => {
transporter.sendMail(someFunc(), (err) => {
if(err) reject(err) else resolve();
});
});
那么它就很简单了:
Promise.all([ sendMail(), sendMail() ])
.then(() => res.status(200).send("success"));
.catch(() => res.status(500).send("failure"));