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

127
Visualizações
Fetch-then devuelve indefinido - Probablemente problema con la naturaleza asíncrona de fetch

Soy relativamente nuevo en JavaScript/React. Trabajando en una aplicación React simple, estoy atascado con un problema real que no puedo resolver.

Este es el código del que hablo:

 const Inventory = () => { let product = []; let response = fetch("http://localhost:3000/inventory.json") .then( response => response.json() ) .then( data => data.map( item => { product.push(item.name); })) .then (console.log(product[0])) setTimeout( x => console.log(product[0]), 1000)

Inventory.json es un archivo simple, que publicaré aquí para completarlo:

 [ { "name": "Cookies1", "details": "Cookies1D", "lastFilled": "5. Jan. 2022", "lastReq": "2. Jan. 2022", "Status": "full" }, { "name": "Cookies2", "details": "Cookies2D", "lastFilled": "5. Jan. 2022", "lastReq": "2. Jan. 2022", "Status": "full" } ]

Ahora, esperaba que el código funcionara de la siguiente manera:

  1. Fetch obtendrá los datos (¡que funciona!)
  2. Después de eso, el JSON se extrae de los datos (primero ENTONCES)
  3. Después de eso, el JSON se extrae a una matriz a través del mapa (segundo ENTONCES)
  4. Después de eso, el primer elemento de la matriz se registra en la consola (el tercero ENTONCES)

Sin embargo, lo que obtengo de la consola de mi tercer .then es indefinido .

Para probar si este problema tiene algo que ver con la naturaleza asíncrona de la búsqueda, agregué una línea que espera 1 segundo antes de que la consola registre el primer elemento de la matriz ( setTimeout(... ), que funciona absolutamente como se esperaba y console.logs " Galletas1".

¿Pero como puede ser eso? Tengo entendido que .then se ejecuta después de los comandos anteriores (es decir, después de que se haya resuelto la promesa anterior). Eso significa que .then (console.log(product[0])) debería darme el mismo resultado (definido) que setTimeout( x => console.log(product[0]), 1000) .

¿Por qué mi tercer .then vuelve indefinido y cómo puedo resolver esto? Parece que tengo algo terriblemente mal. Alguien podría ayudarme con ese rompecabezas. Realmente me exaspero con eso.

Saludos amables Chris

about 4 years ago · Juan Pablo Isaza
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