我有一个处理邮件队列的诺言数组。
我正在使用Promise.all()
处理这一系列的诺言。
let mails = data.result;
let promises = [];
mails.forEach(mail => {
let mailOptions = {
from: mail.mail_from,
to: mail.mail_to,
subject: mail.subject,
[mail.mail_type]: mail.body
};
promises.push(helper.sendMail(mailOptions));
});
Promise.all(promises)
.then(data => {
// update mail queue status in the database.
}).catch(err => console.log(err));
现在,如果在发送任何电子邮件时发生错误,则不会执行更新数据库中邮件状态的代码。
即使有错误,有没有办法让代码执行。
换句话说,我希望每次成功发送邮件时都执行then
,否则应调用catch
,但还应处理其余的邮件队列。
答案 0 :(得分:1)
据我了解,您想为每个承诺执行then
或catch
,对吗?
const mails = data.result;
mails.forEach(mail =>
helper
.sendMail({
from: mail.mail_from,
to: mail.mail_to,
subject: mail.subject,
[mail.mail_type]: mail.body,
})
.then(data => {
// update mail queue status in the database.
})
.catch(err => console.log(err))
)
如果这不是您的意思,请发表评论,我会尽力帮助您