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

200
Visualizações
setTimeout en bucles for anidados en JavaScript no funciona como lo que quiero

Estoy escribiendo una aplicación de JavaScript para simular un proceso de descarga de documentos en la automatización web. La página para interactuar tiene una lista paginada de personas como se muestra en la captura de pantalla a continuación. Al hacer clic en el nombre de la persona, se descargará el documento de esta persona.

El proceso de automatización descarga el documento de cada persona, luego pasa a la siguiente página y continúa con la descarga de la misma manera.

Me gustaría (1) un retraso de 2 segundos entre cada descarga y (2) un retraso de 2 segundos después de acceder a una nueva página y antes de la primera descarga.

Después de algunas investigaciones, se me ocurrió lo siguiente. Está muy cerca de lo que quiero, excepto que ejecuta la descarga inmediatamente después de aterrizar en la página siguiente. ¿Alguna idea sobre cómo puedo modificarlo para obtener más de 2 segundos de retraso entre el aterrizaje en una nueva página paginada y la primera descarga?

 function downloadDoc(x) { console.log("Downloading doc ", x); } function goToPage(p) { for(let i=0; i<5; i++) { setTimeout(downloadDoc, i*2000, i); } console.log("Go to page ", p); } for(let i=0; i<5; i++) { setTimeout(downloadDoc, i*2000, i); } for (let p = 2; p< 5; p++) { setTimeout(goToPage, p * 12000, p); }

ACTUALIZACIÓN: resuelto siguiendo la respuesta proporcionada por @jonas-wilms en https://stackoverflow.com/a/44476626/97109

 async function downloadDoc(x) { await timer (1000); console.log("Downloading doc ", x); } async function goToPage(p) { await timer(2000); console.log("Go to page ", p); } async function task(i) { // 3 await timer(1000); //console.log(` ${i} done!`); downloadDoc(i); } async function main() { for(let i = 0; i < 8; i++) { await goToPage(i); for(let j = 0; j < 5; j++) { await task(j); if (j === 4) { await timer(2000); } } } } main(); function timer(ms) { return new Promise(res => setTimeout(res, ms)); }

ingrese la descripción de la imagen aquí

about 4 years ago · Juan Pablo Isaza
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