我正在尝试使用node-schedule。我想创建一个动态调度程序。我想为日程安排动态设置规则。当根据github上的文档调用它时,它工作正常。但是当我通过循环在函数中使用它时,它就不起作用了。我的代码如下所示。在代码中,出于安全目的,smtp电子邮件地址已被修改。
con.connect(function (err) {
if (err) throw err;
con.query("SELECT * FROM customers", function (err, result, fields) {
if (err) throw err;
for (var i = 0, len = result.length; i < len; i++) {
var dt = dateTime.create(result[i].expire_date);
var formattedDate = dt.format('Y-m-d');
if (result[i].payment_status === 0) {
var dt_str = formattedDate.split('-');
var dt_year = parseInt(dt_str[0]);
var dt_month = parseInt(dt_str[1]);
var dt_date = parseInt(dt_str[2]);
var mail_to = result[i].email, mail_sub='Schedule Of Maintenance', mail_message='Test Mail message Status';
console.log('ScheduleCron Function calling');
scheduleCron(dt_date,dt_month, dt_year, mail_to, mail_sub, mail_message);
} else {
console.log(result[i].payment_status);
}
}
});
});
function scheduleCron(schedule_date,schedule_month,schedule_year,mail_to,mail_sub,mail_message) {
console.log(schedule_date+' '+schedule_month+' '+schedule_year);
console.log('ScheduleCron Function In');
var date = new Date(schedule_year, schedule_month, schedule_date, 13, 33, 0);
schedule.scheduleJob(date, function(){
sendEmail( mail_to, mail_sub, mail_message);
});
}
function sendEmail(mail_to,mail_sub,mail_message) {
var mailOptions = {
from: "email@gmail.com",
to: mail_to,
subject: mail_sub,
text: mail_message
};
transporter.sendMail(mailOptions, function (error, info) {
if (error) {
throw error;
} else {
console.log("Email successfully sent!");
}
});
}发布于 2018-08-15 02:21:28
您需要创建作业对象,如documentation https://www.npmjs.com/package/node-schedule中所示
const job = schedule.scheduleJob(date, function(){
sendEmail( mail_to, mail_sub, mail_message);
});
}发布于 2018-08-15 19:56:18
您缺少调度算法所需的作业对象。从文档中
作业和调度
Node Schedule中的每个计划作业都由一个job对象表示。您可以手动创建作业,然后执行schedule()方法来应用调度,或者使用方便的函数scheduleJob(),如下所示。
发布于 2021-01-29 04:55:59
我也被这个搞糊涂了。我不明白为什么这不起作用,我的意思是"myFunc()“是一个函数。对吗?因此,您将myFunc()抛入scheduleJob()的第二个参数:
function myFunc(){
console.log("stuff");
do.otherStuff();
}
schedule.scheduleJob('*/10 * * * *', myFunc());但出于某种奇怪的原因,它必须这样命名:
function myFunc(){
console.log("stuff");
do.otherStuff();
}
schedule.scheduleJob('*/10 * * * *', function(){
myFunc();
});以避免在执行时出现TypeError: this.job.execute is not a function错误。
https://stackoverflow.com/questions/51838767
复制相似问题