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

151
Vistas
Llamadas asíncronas dentro de setInterval donde cada siguiente depende de la anterior

Tengo una configuración de setInterval que llama internamente a una API. Según la respuesta de la API, currentState las variables de estado previousState y estado actual.

Necesito asegurarme de que cada siguiente cosa de setInterval suceda cuando el anterior ya se haya actualizado por variables.

¿Cómo puedo hacerlo?

 let previous = null; let current = null; const fakeApi = () => { return new Promise((resolve) => setTimeout(resolve(1), 3000)); }; async function fetchData() { current = await fakeApi(); callB(previous, current); previous = current; } function getStats(cb) { setInterval(fetchData, 3000); } function callB(prev, curr) { console.log(prev + " >>> " + curr); } getStats(callB);
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

En lugar de setInterval, puede crear una función de sleep y luego llamar a fetchData después de que haya terminado

 let previous = null; let current = null; const fakeApi = () => { return new Promise((resolve) => setTimeout(resolve(1), 3000)); }; const sleep = (ms) => new Promise(res => setTimeout(res, ms)); async function fetchData() { current = await fakeApi(); callB(previous, current); previous = current; await sleep(3000); return fetchData() } function callB(prev, curr) { console.log(prev + " >>> " + curr); } getStats(callB);
about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede agregar un ciclo while para llamar repetidamente a la función api:

 let previous = null; let current = null; const fakeApi = async () => { return new Promise(resolve => setTimeout(resolve, 3000)); }; let getStats = async ()=>{ while(true) { await fakeApi() callB(previous, current); previous = current; await new Promise(resolve => setTimeout(resolve, 3000)); //add delay between updates as required } })() function callB(prev, curr) { console.log(prev + " >>> " + curr); } getStats();
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