0

我想创建一个只运行一次的同步 cron 作业,一旦创建作业,执行时间将在 20 秒后。我将如何编写解析器?

4

2 回答 2

4

Meteor.setTimeout 可以在服务器上运行

如果你想要在服务器启动 20 秒后运行的东西,你可以这样做

if(Meteor.isServer){

    var job = function(){};

    Meteor.startup(function(){
        Meteor.setTimeout(job, 20000);
    });
}

如果您设置使用 synced-cron,则可以使用SyncedCron.remove(jobName). 请参阅Synced Cron Docs的高级部分

if(Meteor.isServer){

    SyncedCron.add({
        name: 'Run in 20 seconds only once',
        schedule: function(parser) {
            // parser is a later.parse object
            return parser.text('every 20 seconds');
        },
        job: function() {
            // do something important here

            SyncedCron.remove('Run in 20 seconds only once');
        }
    });

    Meteor.startup(function(){
        SyncedCron.start();
    });

}
于 2015-09-02T16:02:19.030 回答
3

根据文档

要安排一次性(即不重复)事件,请使用这样的时间表创建作业parser.recur().on(date).fullDate();

因此,您可以设置类似parser.recur().on(new Date()+1000*20).fullDate()执行一次作业的设置。

于 2016-02-20T17:49:26.367 回答