【问题标题】:Cancel node-schedule event after it has been set设置后取消节点调度事件
【发布时间】:2016-01-11 19:56:12
【问题描述】:

我打算使用node-schedule设置预约提醒推送通知如下:

var schedule = require('node-schedule');
var date = req.body.date;   // Date for reminder from client request 
var j = schedule.scheduleJob(date, function(){
    // Send push notification
});

现在我知道你可以通过调用 cancel() 来取消事件:

j.cancel()

但是,如果来自客户端的用户决定将约会更改为不同的日期,我如何参考该特定作业以取消?

提前感谢您的帮助!

【问题讨论】:

    标签: node.js cron


    【解决方案1】:

    为了检索特定作业,您可以使用唯一名称创建它,并且以后可以通过该唯一名称检索它:

    var j = schedule.scheduleJob(unique_name, date, function() {
    });
    // later on
    var my_job = schedule.scheduledJobs[unique_name];
    my_job.cancel();
    

    【讨论】:

    • 这很好用。谢谢。我试图序列化作业对象,将其写入我的数据库,检索它,反序列化它并调用 .cancel()。你可以想象我的痛苦。
    • \0/ 太棒了!
    • 2 年后也很有帮助。非常感谢。
    • @ShahNewazKhan 它似乎不适用于节点调度版本 1.3.2。如果有 unique_name 参数,则根本不会在指定日期调用函数。它适用于哪个版本?我也找不到唯一名称作为文档中的第一个参数。
    【解决方案2】:
    var randf = require('randomstring');    
        var jobId = randf.generate(10); //randomsrting
        var at = new Date();
        var time = at.setSeconds(at.getSeconds() + Number(5))  //after 5 second     
        schedule.scheduleJob(jobId, new Date(time),function(){
             schedule.cancelJob(jobId);
             console.log('hi--viral');
         });
    

    【讨论】:

      猜你喜欢
      • 2018-10-25
      • 2019-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多