继续执行剩余的错误承诺

时间:2018-10-30 19:58:56

标签: node.js asynchronous promise synchronous

我有一个处理邮件队列的诺言数组。 我正在使用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,但还应处理其余的邮件队列。

1 个答案:

答案 0 :(得分:1)

据我了解,您想为每个承诺执行thencatch,对吗?

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))
)

如果这不是您的意思,请发表评论,我会尽力帮助您