Soy nuevo en js y en programación en general. Necesito tener trabajos programados separados en mi secuencia de comandos usando el programa de nodos, pero no puedo entender cómo porque cada vez que se ejecuta el primer trabajo programado, se ejecuta inmediatamente tanto el primero como el segundo trabajo.
Y las funciones incluso se ejecutan al revés, la segunda función se ejecuta primero (que se establece en un momento posterior a la primera función) y la primera función se ejecuta en segundo lugar.
Mi código:
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'); });Actualización (solución): gracias a la respuesta de Sumanta, logré que funcionara a través de la cadena de análisis hasta la fecha. Aquí está el código de trabajo en caso de que alguien tropiece con el mismo problema y necesite ayuda.
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()node-schedule toma dos argumentos. El primero es la hora (en cron o sintaxis equivalente). El segundo argumento es la función de devolución de llamada que se activará en la coincidencia de sintaxis de tiempo.
compruebe el formato de fecha.
node> new Date('2022-01-08T06:30:00.000+4:00') Invalid DateEjemplos con el formato 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.'); });