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

159
Visualizações
Funciones asincrónicas de Javascript: la segunda función no espera

Buenos días a todos,

Tengo problemas para entender algunas actividades asincrónicas.

Lo que busco hacer es tomar algunos datos, pasar el valor devuelto a una variable, mostrar esa información (y hacer algunas otras funciones según lo que salga). Este proceso debe poder expandirse a múltiples conjuntos de datos, como pronósticos por hora, pronósticos semanales, información sobre peligro de incendio, etc., y se ejecutará en intervalos.

Revisé la página Promise de MDN junto con numerosas búsquedas aquí para obtener una respuesta, pero no parece hacer clic.

Lo que tengo hasta ahora:

 let weeklyData; let pull; async function pullData(url){ fetch(url).then(res=>res.json()).then((val)=>{pull=val}); } function buildDataSets(){ for(let x = 0; x < pull.properties.periods.length; x++){ weeklyDataSets[x] = pull.properties.periods[x]; } }

Cuando se llaman a mano en la consola, estos se resuelven correctamente. Pull sale como un objeto y buildDataSets() puede ejecutarse. Imagino que es porque hay tiempo suficiente para que se resuelva pullData(url) .

Necesito procesar la respuesta de pullData(url) , por lo que debo asignar su valor de retorno a un objeto.

Lo que puedo decir, debería estar usando algo en el estadio de béisbol de

 Promise.resolve(pullData(url)) .then(()=> buildDataSets());

Esto devuelve un estado pendiente y la extracción permanece sin definir cuando buildDataSets() se desactiva. Sé que necesito extraer los datos, esperar hasta que se completen, luego asignar el valor a extracción si es exitoso. Luego, después de que se haya asignado la extracción, llame a la función buildDataSets() . Agregar un .then() que llama a buildDataSets() tampoco parece funcionar, lo que hace que la extracción no esté definida cuando intenta acceder a los valores.

¿Podría alguien ayudarme a explicar lo que me estoy perdiendo? Siento que estoy mirando la respuesta, pero no puedo verla.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Debería devolver un valor de pullData para que otros puedan await (o acceder a él en el controlador then ). Consulte ¿Por qué mi variable permanece inalterada después de modificarla dentro de una función? - Referencia de código asíncrono

Por lo general, no establece una variable no local de una devolución de llamada asincrónica exactamente por lo que ha mencionado. La

Probablemente desee que buildDataSets también devuelva una Promesa.

 async function pullData(url){ return fetch(url).then(res=>res.json())); } async function buildDataSets(){ const pull = await pullData('/url'); const weeklyDataSets = {}; for(let x = 0; x < pull.properties.periods.length; x++){ weeklyDataSets[x] = pull.properties.periods[x]; } return weeklyDataSets; } async function myMain () { const data = await buildDataSets(); console.log({data}); }

Aquí está el mismo código sin usar await s, solo cadenas Promise

 function pullData(url){ return fetch(url).then(res=>res.json())); } function buildDataSets(){ return pullData('/url') .then((pull) => { const weeklyDataSets = {}; for(let x = 0; x < pull.properties.periods.length; x++){ weeklyDataSets[x] = pull.properties.periods[x]; } return weeklyDataSets; }); } function myMain() { return buildDataSets().then((sets) => { console.log({sets}); }); }
about 4 years ago · Juan Pablo Isaza Relatório
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