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

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

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 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!