node.js中的Cronjobs

Tho*_*mas 24 javascript cron node.js

是否有可能在node.js中的某一特定时间定期调用函数?我的第一次实施是

setInterval(functionName(),(24*60*60*1000));
Run Code Online (Sandbox Code Playgroud)

这不是最理想的,因为每次重新启动节点时它都会重新启动.是否有更好的可能性来实现这一点?

Ray*_*nos 21

要防止重新启动,您需要创建持久数据存储作业.

就像是 :

Job = {
    _id: Number,
    job: String,
    dueDate: Date,
    completed: Boolean
}
Run Code Online (Sandbox Code Playgroud)

然后有一些代码如下:

var createJob = function(url, date) {
    var j = db.create(Job, function(j) {
         j.job = url;
         j.dueDate = date;
         j.save();
    });
};

var runJob = function(j) {
    var id = j._id;
    setInterval(j.dueDate - Date.now(), function() {
         db.getOne(Job, { _id : id }, function(j) {
             require(j.job);
             j.finished = true;
             j.save();  
         });
    });
    j = null;
};
Run Code Online (Sandbox Code Playgroud)

在启动时,您只需要执行以下操作:

db.get(Job, { finished: false }, function(jobs) {
    jobs.forEach(runJob);
});
Run Code Online (Sandbox Code Playgroud)

db用MongoDB,CouchDB,Redis等替换泛型.