Me gustaría verificar el minuto, hasta que llegue a: 00,: 05,: 10, etc. minutos, luego configure en 5 minutos (en el minuto) y continúe durante la aplicación. ¿Hay una mejor manera de hacer esto? ¿Necesito un clearTimeout? Por favor ayuda y gracias!
Objetivo: Verifique los minutos, una vez en 00, 05, 10, 15, 30, etc. cambie al intervalo de 5 minutos y siga corriendo.
// Set to 1 minute initially. let interval = 60000; function timeCheck() { const date = getNow(); console.log("checking...", `${dayjs(date).hour()}:${dayjs(date).minute()}:${dayjs(date).second()}`); // Check browser time in minutes for 00, 05, 10, 15, 20, etc. if (dayjs(date).minute() % 5 === 0) { // Set to 5 minute. interval = 300000; ... } setTimeout(timeCheck, interval); } clearTimeout(timeCheck); timeCheck(); console.log("Starting..."); const task = () => { console.log("do something"); } let minuteInterval; const checkMinuteInterval = () => { const date = new Date(); if (date.getMinutes() % 5 === 0) { clearInterval(minuteInterval); task(); setInterval(task, 1000 * 60 * 5); } else { console.log("Not on multiple of 5"); } }; minuteInterval = setInterval(checkMinuteInterval, 1000 * 60); checkMinuteInterval();Un enfoque completamente diferente, ya que esto parece un problema XY , es simplemente tener un intervalo para cada minuto, verificar si es un múltiplo de 5, si es así, hacer algo, de lo contrario, simplemente salga de la función. (Según lo sugerido por @Heretic Monkey )
console.log("Starting..."); const task = () => { if ((new Date()).getMinutes % 5 !== 0) { console.log("Not a multiple of 5 minutes"); return; // would just be return; in production code } console.log("Do something") // rest of function... } task(); setInterval(task, 1000 * 60);