Node-Cron:如何确保最后一项工作完成

Node-Cron: how to ensure last job is complete

我正在使用 node-cron 发送操作电子邮件(目前正在搜索需要每分钟发送的新电子邮件)。

我的函数 (operationalEmails) 查找 mongodb 已发送标志 = false 的记录,发送电子邮件,然后更改已发送标志 = true。

如果 cron 的迭代有大量记录要发送,可能需要一分钟以上。

如何确保 cron 的最后一次迭代在开始新的之前完成?

//Run every Min
cron.schedule("* * * * *", () => {
  operationalEmails();
});

您需要创建一个简单的锁

const running = false;

function operationalEmails() {

   if (running) {
     return
   }

   running = true;
   // do stuff
   running = false;
}

//Run every Min
cron.schedule("* * * * *", () => {
  operationalEmails();
});