Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

214
Views
¿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 answers
Answer question

0

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

about 4 years ago · Juan Pablo Isaza Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!