Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

128
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda