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

226
Vistas
Use Axios .then() con la variable de índice de bucle for

Quiero iterar algunas URL de página, almacenadas en una matriz, y recuperarlas para realizar una operación sobre su archivo html. Como necesito almacenar un resultado de dicha operación para cada página para usarlos la próxima vez que llame a la función, quiero pasar el índice (i) en la llamada onResponse para que pueda asignar el resultado a su lugar adecuado en el formación. Pero en lugar de usar el valor i de la i-ésima iteración respectiva, esta llamada de función usa pages.length (el último valor de i). Sé por qué sucede esto, pero no sé cuál sería una buena solución. ¿Alguna ayuda aquí?

 async function checkPages(){ const dateObj = new Date(); console.log(pages.length) console.log(`Time: ${dateObj.toTimeString()}\n`); for (var i = 0; i < pages.length; i++){ axios.get(pages[i], { httpsAgent }) .then(response => onResponse(response, i) ) .catch(function (error) { onError(error) }); }
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

intenta usar let en lugar de var

 for (let i = 0; i < pages.length; i++) {

let tienen alcance de bloque y var tienen alcance de función.

Dado que está llamando a un método async , al usar var finalizará el ciclo for y pasará el último valor a la devolución de llamada. Pero usar let mantendrá la variable asignada en el alcance del bloque en la devolución de llamada.

Aquí está la definición de let , y aquí está la de var .

about 4 years ago · Juan Pablo Isaza Denunciar

0

axios.get es una promesa, por lo que su foreach está iniciando todas las solicitudes http y llego a la longitud de la matriz antes de i obtenga una respuesta de su API.

Probar:

 async function checkPages() { const results = await Promise.all( pages.map((page) => axios.get(page, { httpsAgent }).catch((error) => { onError(error); }) ) ); results.forEach((response, i) => { onResponse(response, i); }); }
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