const secondsInterval = () => { const date = getNow(); if (dayjs(date).minute() % 5 !== 0 && dayjs(date).second() !== 0) { console.log("return..."); return; } console.log("checking..."); ... }; // Check every second, if we're at the 5-minute interval check. setInterval(secondsInterval, 1000);Esto parece atascarse. Está "comprobando" cada segundo de cada marca de 5 minutos. ¿Qué estoy haciendo mal? Gracias por adelantado.
Objetivo: "comprobar" cada minuto y 00 segundos: :00:00, :05:00, :10:00, , :15:00, etc. Gracias de nuevo.
Deberías averiguar cuál es el tiempo para tus próximos 5 minutos redondeados. como esto:
const FIVE_MIN = 1000 * 60 * 5; function waitAndDoSomething() { const msToNextRounded5Min = FIVE_MIN - (Date.now() % FIVE_MIN); console.log(`Waiting ${msToNextRounded5Min}ms. to next rounded 5Min.`); setTimeout(() => { console.log('It is now rounded 5 min'); waitAndDoSomething(); }, msToNextRounded5Min); } waitAndDoSomething();Si todo lo que le importa es ejecutar algún código cada 5 minutos, entonces no haga que se ejecute cada segundo innecesariamente, solo para regresar. Simplemente haga que se ejecute cada 5 minutos (300000 MS) y haga lo que necesita hacer y elimine toda la verificación del código de marca de 5 minutos, ya que es innecesario.
const secondsInterval = () => { // -------------------- Remove ---------------- //const date = getNow(); //if (dayjs(date).minute() % 5 !== 0 && dayjs(date).second() !== 0) { // console.log("return..."); // return; //} // -------------------- Remove ---------------- console.log("checking..."); ... }; // Check every 5 mins setInterval(secondsInterval, 300000);Tu lógica para el si es chiflada. Aquí lo invertí para que el if se encargue de "hacer la cosa" y el else regrese.
const secondsInterval = () => { const date = dayjs(new Date()); if (dayjs(date).minute() % 5 == 0 && dayjs(date).second() == 0) { console.log("checking..."); } else { console.log("returning..."); return; } //... }; // Check every second, if we're at the 5-minute interval check. setInterval(secondsInterval, 1000); <script src="https://unpkg.com/dayjs@1.8.21/dayjs.min.js"></script>