Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

218
Vistas
¿Cómo actualizar los datos de setInterval cada x segundos sin afectar el interior de setInterval?
  • ¿Cómo puedo actualizar ranType cada 30 segundos?
  • dado que ranType es aleatorio si ranType === 'funciona' cómo agregar un intervalo para actualizar los datos internos cada 10 segundos.
  • Esto es lo que probé:
 setInterval(() => { let type = ['works', 'testing']; let ranType = type[Math.floor(Math.random() * type.length)]; if (ranType === 'works') { setInterval(async () => { console.log(`Okay Working ${RANDOM DATA}`); }, 10000); } else { setInterval(async () => { console.log(`Testing also working ${RANDOM DATA}`); }, 10000); // But RANDOM DATA should update every 10 seconds - I have RANDON data } }, 30000); // ranType should update every 30 seconds
  • Rendimiento esperado:

Después de 30 segundos
si ranType es 'funciona'
debería repetir la consola con datos aleatorios cada 10 segundos

Nuevamente, después de 30 segundos, (ranType) debería cambiar a prueba
si ranType está 'probando'
debería repetir la consola con otros datos aleatorios cada 10 segundos

  • Otro problema es que sigue repitiendo 3-4 veces cada 10 segundos.
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

const ranType_reset_period = 30000; const works_reset_period = 10000; const testing_reset_period = 10000; const random_data_reset_period = 10000; let works_interval = -1; let testing_interval = -1; let RANDOM_DATA = "RANDOM_DATA_DEFAULT"; function reset_random_data() { let sample_random_data = ['RANDOM_DATA_1', 'RANDOM_DATA_2', 'RANDOM_DATA_3', 'RANDOM_DATA_4']; RANDOM_DATA = sample_random_data[Math.floor(Math.random() * sample_random_data.length)]; console.log('RANDOM_DATA', 'RESET', RANDOM_DATA); } function get_random_ranType() { let type = ['works', 'testing']; return type[Math.floor(Math.random() * type.length)]; } function reset_works_interval() { console.log(`Okay Working ${RANDOM_DATA}`); } function reset_testing_interval() { console.log(`Testing also working ${RANDOM_DATA}`); } function reset_rantype() { clearInterval(works_interval); clearInterval(testing_interval); if (get_random_ranType() === 'works') { works_interval = setInterval(reset_works_interval, works_reset_period); } else { testing_interval = setInterval(reset_testing_interval, testing_reset_period); // But RANDOM DATA should update every 10 seconds - I have RANDON data } } setInterval(reset_random_data, random_data_reset_period); setInterval(reset_rantype, ranType_reset_period);

Ilustración

 const ranType_reset_period = 30000; const works_reset_period = 10000; const testing_reset_period = 10000; const random_data_reset_period = 10000; let works_interval = -1; let testing_interval = -1; let RANDOM_DATA = "RANDOM_DATA_DEFAULT"; function reset_random_data() { let sample_random_data = ['RANDOM_DATA_1', 'RANDOM_DATA_2', 'RANDOM_DATA_3', 'RANDOM_DATA_4']; RANDOM_DATA = sample_random_data[Math.floor(Math.random() * sample_random_data.length)]; console.log('RANDOM_DATA', 'RESET', RANDOM_DATA); } function get_random_ranType() { let type = ['works', 'testing']; return type[Math.floor(Math.random() * type.length)]; } function reset_works_interval() { console.log(`Okay Working ${RANDOM_DATA}`); } function reset_testing_interval() { console.log(`Testing also working ${RANDOM_DATA}`); } function reset_rantype() { clearInterval(works_interval); clearInterval(testing_interval); if (get_random_ranType() === 'works') { works_interval = setInterval(reset_works_interval, works_reset_period); } else { testing_interval = setInterval(reset_testing_interval, testing_reset_period); } } setInterval(reset_random_data, random_data_reset_period); // But RANDOM DATA should update every 10 seconds - I have RANDON data setInterval(reset_rantype, ranType_reset_period);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Ok, creo que esto es lo que quieres, avísame si no es el resultado esperado. Cada 30 segundos, el setInterval externo borra el último ID de intervalo y crea uno nuevo.

 let intervalId; setInterval(() => { let type = ["works", "testing"]; let ranType = type[Math.floor(Math.random() * type.length)]; console.log("new cycle of interval of 30 seconds"); clearInterval(intervalId); setTimeout(() => { if (ranType === "works") { intervalId = setInterval(async () => { console.log(`Okay Working`); }, 10000); } else { intervalId = setInterval(async () => { console.log(`Testing also working`); }, 10000); } }); }, 30000);

EDITAR

creó una nueva versión que podría ser más clara

 const setIntervalXTimes = (callback, delay, repetitions) => { let count = 0; let intervalID = setInterval(() => { if (count === repetitions) { clearInterval(intervalID); } else { callback(); } count++; }, delay); }; setInterval(() => { let type = ["works", "testing"]; let ranType = type[Math.floor(Math.random() * type.length)]; if (ranType === "works") { setIntervalXTimes(() => console.log(`Okay Working`), 1000, 3); } else { setIntervalXTimes(() => console.log(`Testing also working`), 1000, 3); } }, 3000);

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda