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

342
Vistas
¿El tiempo de espera de setInterval () es después de que se llamó al anterior o después de que se hizo? / ¿Cómo controlar el tiempo de espera entre iteraciones de bucle?

Estoy tratando de usar setInterval para llamar a una API que tiene un límite de velocidad para las solicitudes por segundo. Traté de usar setInterval como un ciclo while, pero no puedo encontrar información sobre cuándo comienza la siguiente ronda.

Entonces si hago:

 setInterval(() => { CallAPI(); // Some proccessing }, 300)

¿Comenzará la próxima ronda después de que termine la primera o independientemente de ella? porque el orden importa, y también el tiempo puede causar un error.

También puedo intentar hacer lo mismo con setTimeout y un ciclo while como este:

 while(true) { setTimeout(() => { CallAPI(); // do some proccessing }), 300 }

Pero nuevamente, no estoy seguro de cuándo comenzará la próxima ronda del bucle.

Y, por último, hago trampa a mi manera y hago

 while(true) { await CallAPI(); // Do proccessing await setTimeout(() => true, 300) }

Entonces, ¿cuál es el orden de setTimeout() y setInterval() en un ciclo?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Simplemente llámelo cuando termine de ejecutarse. No hay necesidad de un bucle.

 function fakeCall () { return new Promise((resolve) => { window.setTimeout(resolve, Math.random() * 2); }); } function next() { window.setTimeout( async function () { await fakeCall(); console.log(Date.now()); next(); }, 3000); } next();

about 4 years ago · Juan Pablo Isaza Denunciar

0

Probablemente querrá configurar su ciclo de la siguiente manera:

 var TO_asyncLoop = null; function asyncLoop(fn, ms){ clearTimeout(TO_asyncLoop); TO_asyncLoop = setTimeout(() => { fn() }, ms) } var i = 0; function doSomething(){ // do somthing console.log("hi", i++); // when this "something" is finished, do it again: asyncLoop(doSomething, 500) } doSomething()

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