Tengo una variedad de objetos. Para cada objeto necesito establecer un horario.
'node-schedule'para restablecer el horario lo necesito en una variable.
function setSchedule(ticket) { 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.'); }); }¿Cómo puedo vincular el objeto a su propia función de programación? Quiero decir, más tarde necesito saber qué horario necesito restablecer.
Me gustaría algo como, pero creo que hay una mejor manera?
const job[ticket.id] = schedule.scheduleJob(date, function () { console.log('The world is going to end today.'); });La variable de job estará disponible en el cierre de la función de devolución de llamada programada, si se hace referencia a ella.
Considere, por ejemplo, el siguiente código, que es muy similar a su propia situación:
const handle = setInterval(function() { console.log("callback"); clearInterval(handle); }, 100) La devolución de llamada se disparó una vez y luego se canceló mediante la variable handle que existe en un ámbito externo.
Ok ahora lo soluciono de esta manera
function setSchedule(ticket) { if (ticket.blocked) { const date = new Date(ticket.blockedDate); scheduleJob[ticket._id] = schedule.scheduleJob( { date: date.getDate(), month: date.getMonth(), year: date.getFullYear(), }, () => { console.log('Run' + ticket._id); scheduleJob[ticket._id].cancel(); Ticket.updateOne( { _id: ticket._id }, { blocked: false, blockedDate: null } ) .then(() => {}) .catch((error) => { console.log(error); }); } ); } if (!ticket.blocked && scheduleJob[ticket._id]) { scheduleJob[ticket._id].cancel(); } }¿Qué piensas? ¿Es esta una forma común de usar la identificación para la matriz?