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

219
Vistas
¿Cuál es el comportamiento correcto de async await inside for loop with axios call?

Estoy tratando de llamar a una API de zoom para varias identificaciones de reuniones. Pero no puedo descifrar el comportamiento de async-await.

tengo dos funciones:

  1. getDesiredRecordings: filtra la matriz de grabaciones para las grabaciones requeridas. Mientras lo hago, si la grabación es válida, estoy llamando a otra función que me devuelve la agenda de esta reunión.
  2. getMeetingAgenda: Destinado a devolver la agenda de la reunión actual Id.

Esta agenda se almacena correspondiente a la id en un objeto. Pero, La agenda está resultando ser indefinida. console.log(response.data.agenda); dentro de la segunda función y consuela la agenda, pero no puedo entender por qué toda la agenda de la reunión está indefinida. Creo que el bucle for no await getMeetingAgenda y no puedo averiguar cómo hacer que el bucle for espere. También probé el operador ternario que también falla.

CÓDIGO:

 let { meetingIds, requiredMeetings, meetingAgendas } = await getDesiredRecordings(recordings,config); async function getDesiredRecordings(recordings, config) { try { let requiredMeetings = []; if (!recordings || !Object.keys(recordings).length) { return requiredMeetings; } let meetingIds = []; let meetingAgendas = {}; let isMeetingValid = false; console.log(config) for (let i = 0; i < recordings.length; i++) { if (recordings[i] && recordings[i].topic && isRecordingValid(recordings[i].topic)) { requiredMeetings.push(recordings[i]); meetingIds.push(recordings[i].id); // meetingAgendas[recordings[i].id] = await getMeetingAgenda(recordings[i].id,config); isMeetingValid = true; } isMeetingValid ? meetingAgendas[recordings[i].id] = await getMeetingAgenda(recordings[i].id,config): "" ; console.log("getDesiredRecordings ID: ",recordings[i].id, meetingAgendas[recordings[i].id]); //Prints after getMeetingAgends console(correct id,undefined) isMeetingValid = false; } console.log(meetingAgendas); //All undefined return { "meetingIds": meetingIds, "requiredMeetings": requiredMeetings, "meetingAgendas" : meetingAgendas }; } catch (e) { return Promise.reject(new Error(e)); } } async function getMeetingAgenda(meetingId, config) { console.log(meetingId) await axios.get(`${Zoom_Agenda_End_Point}${meetingId}`, config) .then(function (response) { console.log(response.data.agenda); return response.data.agenda; }) .catch(e=>{ console.log("Axios error occured in getMeetingAgenda: ",e); return ""; }); }
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Devolver axios.get funcionó en la función getMeetingAgenda. return axios.get...

about 4 years ago · Juan Pablo Isaza Denunciar

0

Debe esperar a que todas las promesas terminen en el ciclo de recordings . Elimine el bucle for y use la función de mapa:

 await Promise.all(recordings.map(async (recording) => { if (recording && recording.topic && isRecordingValid(recording.topic)) { requiredMeetings.push(recording); meetingIds.push(recording.id); // meetingAgendas[recording.id] = await getMeetingAgenda(recording.id,config); isMeetingValid = true; } isMeetingValid ? meetingAgendas[recording.id] = await getMeetingAgenda(recording.id,config): "" ; console.log("getDesiredRecordings ID: ",recording.id, meetingAgendas[recording.id]); //Prints after getMeetingAgends console(correct id,undefined) isMeetingValid = false; return recording; })); console.log(meetingAgendas);

También haga que su función getMeetingAgenda devuelva un axios: return axios..

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