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

152
Vistas
¿Por qué la solicitud asíncrona con await no espera los datos de respuesta?

No estoy seguro de por qué await no funciona para mí, ¿alguien puede ayudarme? Seguí algunas guías y lo copié exactamente igual, pero aún no funciona. Necesito que se complete la matriz CardsID antes de llamar a console.log (CardsID.length)

código:

 "[LL_REPTAG_URLPREFIXFULL /]/api/v2/businessworkspaces?where_workspace_type_id=54"; async function postData() { let response = await fetch(url, { method: "GET", // *GET, POST, PUT, DELETE, etc. headers: { "Content-Type": "application/json", OTCSTicket: "[LL_REPTAG_OTCSTICKET /]", }, //body: JSON.stringify(data) // body data type must match "Content-Type" header }); return await response.json(); } //(async function(){ postData().then(function (data) { // Log the data to the console // You would do something with both sets of data here //console.log(data); data.results.forEach((element) => { CardsID.push(element.data.properties.id); console.log("added"); }); }); //})(); console.log(CardsID.length); console.log(CardsID);``` result (console): 0 [] [] [] 24 added
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Está llamando a console.logs inmediatamente después de la llamada postData(), que es asíncrona (bueno, promete) y, por lo tanto, no esperará a que finalice la ejecución. O bien, debe colocar console.logs dentro del controlador entonces, así:

 postData().then(function (data) { data.results.forEach((element) => { CardsID.push(element.data.properties.id); console.log("added"); }); console.log(CardsID.length); console.log(CardsID); });

O (en aras de la coherencia), puede hacer que todo sea asíncrono/en espera, por ejemplo:

 async function postData() { const response = await fetch(url, { method: "GET", // *GET, POST, PUT, DELETE, etc. headers: { "Content-Type": "application/json", OTCSTicket: "[LL_REPTAG_OTCSTICKET /]", }, }); return await response.json(); } async function run() { const data = await postData(); const CardsID = []; for (const element of data.results) { CardID.push(element.data.properties.id); console.log("added"); } console.log(CardsID.length); console.log(CardsID); } run();
about 4 years ago · Juan Pablo Isaza Denunciar

0

El problema es que el código en el postData().then se ejecuta de forma asíncrona, después de que se resuelve la promesa. La instrucción console.log(CardsID.length) se ejecutará antes de que se ejecute el bloque then .

Para solucionarlo, puede ejecutar la instrucción console.log en la devolución de llamada de la promesa.

 postData().then(function (data) { data.results.forEach((element) => { CardsID.push(element.data.properties.id); console.log("added"); }); // move the console.log statement here console.log(CardsID.length); console.log(CardsID); });
about 4 years ago · Juan Pablo Isaza Denunciar

0

Solo recuerde que su código debajo del bloque .then se ejecutará antes de que se resuelva porque Javascript espera para resolver pero continúa a través de su ejecución síncrona para ejecutar el código debajo de cualquier código asíncrono.

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