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

188
Visualizações
Obtenga datos de una gran cantidad de URL obtenidas

No estoy seguro de cómo hacer esto. Obtengo de 1 URL para obtener una matriz de objetos como este:

 [{name: 'apple', url: 'appleURL'}, {name: 'orange', 'orangeURL', ...}]

luego mapee a través de cada URL para obtener datos, los datos devueltos para cada elemento tienen otra URL... como esta:

 [{name: 'apple', colors: ['green', 'red'], type: 'http://URL-that-needs-fetching'},{...etc}]

esto es lo que tengo, y funciona pero es extremadamente lento...

 useEffect(() => { const fetchFruit = async () => { setLoading(true); const fruitResponse = await fetch(fruitPath); const fruitJson: Fruit = await fruitResponse.json(); const fruitDetails = await Promise.all( fruitJson.results.map(async (f: FruitURLs) => { const fDetails = await fetch(f.url); const json: FruitDetails = await fDetails.json(); return json; }) ); const getFruitDescriptions = await Promise.all( fruitDetails.map(async (item: FruitDetails, index: number) => { const fruitType = await fetch(item.type.url); const json: FruitInfo = await fruitType.json(); return json; }) ); let full: FruitDetails[] = fruitDetails; for (let index = 0; index < fruitDetails.length; index++) { full[index].fruitInfo = getFruitDescriptions[index]; } setFruitDetails(full); setLoading(false); }; fetchFruit(); }, []);

Soy nuevo en el uso de promesas y no estoy 100% seguro con ellas, también nuevo en TS y nativo de reacción, así que disculpas si hay errores aquí ...

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

0

El problema es que al usar await( await() dentro Promise.all() , está resolviendo las búsquedas en lugar de que sucedan en paralelo y devolviéndolas envueltas en una promise .

Puedes tomar una referencia:

 const fetchFruit = async () => { const fruitResponse = await fetch(fruitPath); const fruitJson: Fruit = await fruitResponse.json(); const fruitDetails = await Promise.all( fruitJson.results.map(async (f: FruitURLs) => fetch(f.url)) ); const getFruitDescriptions = await Promise.all( fruitDetails.map(async (item: FruitDetails, index: number) => fetch(item.type.url) ) ); const [fruitDetailsAsJson, getFruitDescriptionsAsJson] = Promise.all([ fruitDetails.map(async (f) => f.json()), getFruitDescriptions.map(async (f) => f.json()), ]); const full = fruitDetailsAsJson.map((fruit, index) => ({ ...fruit, fruitInfo: getFruitDescriptionsAsJson[index], })); setFruitDetails(full); setLoading(false); };

Utilice este recurso para conocer las mejores prácticas.

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