0

我是 js 和一般编程的新手。我需要使用 node-schedule 在我的脚本中分离预定作业,但我不知道如何,因为每次要执行第一个预定作业时,它都会立即执行第一个和第二个作业。

并且函数甚至以相反的方式执行,第二个函数首先执行(设置为比第一个函数晚),第一个函数第二个执行。

我的代码:

const schedule = require('node-schedule');

//first job
let firstPost = new Date('2022-01-08T06:30:00.000+4:00');

schedule.scheduleJob(firstPost, function () {
    console.log('first job');
});

// second job
let secondPost = new Date('2022-01-08T06:32:00.000+4:00');

schedule.scheduleJob(secondPost, function () {
    console.log('second job'); 
});

更新(解决方案):感谢 Sumanta 的回答,我设法通过解析字符串使其工作。这是工作代码,以防有人偶然发现同样的问题并需要帮助。

const schedule = require('node-schedule');

const unParsedText1 = '{"job1Time":"2022-1-9-14:25", "job2Time":"2022-1-9-14:26"}';
const parsedText1 = JSON.parse(unParsedText1);
parsedText1.job1Time = new Date(parsedText1.job1Time);
parsedText1.job2Time = new Date(parsedText1.job2Time);

function test1() {
    schedule.scheduleJob(parsedText1.job1Time, function () {
        console.log('First job');
    });
}

function test2() {
    schedule.scheduleJob(parsedText1.job2Time, function () {
        console.log('second job');
    });
}
test1()
test2()
4

1 回答 1

0

node-schedule 有两个参数。第一个是时间(在 cron 或等效语法中)。第二个参数是回调函数,它将在时间语法匹配时触发。

检查日期格式。

node> new Date('2022-01-08T06:30:00.000+4:00')
Invalid Date

cron 格式的示例:

const schedule = require('node-schedule');
const date = new Date(2012, 11, 21, 5, 30, 0);

const job = schedule.scheduleJob(date, function(){
  console.log('The world is going to end today.');
});
于 2022-01-08T05:29:37.983 回答