每天在流星中安排一项任务

时间:2017-06-07 16:06:37

标签: javascript meteor cron

我在我的流星应用程序中使用percolate:synced-cron。我在这里按照教程http://richsilv.github.io/meteor/scheduling-events-in-the-future-with-meteor/

我对

的一部分感到困惑
function scheduleMail(details) { 

    if (details.date < new Date()) {
        sendMail(details);
    } else {
        var thisId = FutureTasks.insert(details);
        addTask(thisId, details);       
    }
    return true;

}

并在

FutureTasks.find().forEach(function(mail) {
    if (mail.date < new Date()) {
        sendMail(mail)
    } else {
        addTask(mail._id, mail);
    }
});

任何人都可以解释这两部分代码的更多信息吗? 另外,如何在午夜每天运行任务?

1 个答案:

答案 0 :(得分:2)

如果邮件应该立即发送,则第一部分发送邮件,否则执行addTask函数,该函数创建在特定日期执行的cron。执行cron时,将发送邮件,然后删除任务和cron。

第二部分是在启动时启动的,用于发送服务器在同一进程中关闭时未发送的邮件

我个人认为,这是无效的,因为创建了一个cron然后被删除了,这是不可重用的。

如果你想在午夜每天运行一个cron,它是如何工作的:

SyncedCron.add({
    name: "NAME",
    schedule: function(parser) {
        return parser.cron("0 0 * * *");
    },
    job: function() {
        //execute your task
    }
});