设置后取消节点调度事件
Posted
技术标签:
【中文标题】设置后取消节点调度事件【英文标题】: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()
但是,如果来自客户端的用户决定将约会更改为不同的日期,我如何参考该特定作业以取消?
提前感谢您的帮助!
【问题讨论】:
【参考方案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');
);
【讨论】:
以上是关于设置后取消节点调度事件的主要内容,如果未能解决你的问题,请参考以下文章