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

122
Vistas
matriz de bucle infinito con setTimeout javascript

Tengo una matriz de cadenas que paso a un bucle for con un setTimeout dentro. Intenté for(; ;) y while(true) la función, pero esto solo hace que el navegador se bloquee.

También intenté agregar una declaración if dentro de la función

 if (x == links.length) { loopUrls() }

Lo que funciona pero se salta toda la sección de intervalo de la función, ciclando toda la matriz infinitamente sin esperar.

 function loopUrls() { for (var x = 0, ln = links.length; x < ln; x++) { setTimeout(function (y) { document.getElementById('ifURLS').src = links[y]; },x * 500,x); } }; loopUrls();

El objetivo es tener una lista de URL que se asignan infinitamente al iframe para mostrar informes en una pantalla. (el intervalo de tiempo es pequeño para fines de prueba)

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

0

Si entiendo correctamente, desea que cada enlace tenga alguna función que se ejecute cada X milisegundos.

Para lograr esto, creo que es mejor usar setInterval .

Puedes hacer algo como:

 links.forEach((link) => { setInterval(() => { //do something every X milliseconds }, X) })
about 4 years ago · Juan Pablo Isaza Denunciar

0

una manera de hacer eso:

 // const links = [ ... ] const myImg = document.queryselector('#ifURLS') function LoadImg() { let indx = 0 , let refIntv = setInterval( ()=> { myImg.src = links[indx++] if (indx >= links.length) clearInterval( refIntv ) } , 5000 ) // 5s delay }
about 4 years ago · Juan Pablo Isaza Denunciar

0

No es necesario tener múltiples tiempos de espera. Puede lograr esto usando setInterval que ejecuta una función cada x cantidad de tiempo. Luego, en esa función, mantiene un estado de la URL actual para que pueda mostrar la próxima vez que se ejecute la función

 // creates a function that iterates over the array and every time its called returns the next element function createIterator(array){ let sourceArray = [...array]; // starts at the end so it resets automatically let topIndex = sourceArray.length; let currentIndex = topIndex - 1; return function (){ currentIndex++; // if the limit is reached, its reseated if (currentIndex === topIndex) { currentIndex = 0; } return sourceArray[currentIndex]; } } // your urls let urls = ["a", "b", "c"]; // uses the function to create the iterator let iterator = createIterator(urls); setInterval(function() { let currentUrl = iterator(); document.getElementById('ifURLS').src = currentUrl; },1000);

No hay necesidad de bucles, ya que el iterador se maneja sin problemas

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