Tengo que ejecutar un grupo de funciones de vez en cuando, durante el día tengo que ejecutarlas cada 2 minutos, por la noche deben ejecutarse cada 3 minutos y por la noche deben ejecutarse cada 5 minutos. En este momento los estoy ejecutando así, con cada función ejecutándose cada 2 minutos en todo momento del día.
const function1 = () => DO_SOMETHING const function2 = () => DO_SOMETHING_ELSE const function3 = () => DO_SOMETHING_ANTOTHER_THING setInterval(() => { function1() }, 1000 * 60 * 2) setInterval(() => { function2() }, 1000 * 60 * 2) setInterval(() => { function3() }, 1000 * 60 * 2)¿Alguien sabe cómo puedo configurar esto para que la variable de tiempo cambie según la hora del día?
Esto se puede hacer usando un setTimeout que se activa solo, en lugar de un setInterval .
Visión general:
Date().getHours() para encontrar la hora.Ejemplo:
(Puede cambiar la definición de "tarde" y "noche" usando las dos declaraciones if)
// This is required if you ever want to use clearTimeout() let timeoutRefernce = null // Run the desired code after X amount of time const result = () => { // Start a new iteration of the timer newTimeout() // Run your resulting code // eg Call function1, function2 and function3 console.log('Result') } const newTimeout = () => { const time = new Date().getHours() let minutes = 2 // Is it evening? (Between 5pm and 10pm) if (time > 17 && time < 22) { minutes = 3 } // Is it night? (Between 10pm and 6am) if (time > 22 || time < 6) { minutes = 5 } // Create a new timeout with the relevant duration timeoutRefernce = setTimeout(result, 1000 * 60 * minutes) console.log(`Hour: ${time}, New timeout created with duration ${minutes} minutes`) } // Run the first timeout on load newTimeout()