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

235
Views
Cómo iterar en axios devuelve el nuevo porcentaje + matriz en cada bucle

El problema

Todavía me estoy acostumbrando a la programación funcional (FP). Especialmente FP en React-native. Los objetivos son:

  • obtener diferentes caracteres de la API a través de la iteración
  • cada paso devuelve el porcentaje completado más sus objetos.
  • la ruta y sus encabezados pueden cambiar. (por ejemplo: en lugar de personajes, busque planetas en su lugar)

los intentos

La creación de funciones separadas para cada paso estuvo bien, el problema es cómo 'conectarlas' y obtener el resultado deseado (como se describe en la sección 'El problema'). Cada idea que intenté causó algún tipo de acoplamiento o repetición (de código)

Peticiones

 function requestCharacters(start, token) { return axios.get(`https://swapi.dev/api/people/${start}/`,{ headers: { Authorization: 'Bearer ' + token, ContentType: 'application/json', } }) }

 function requestPlanets(start) { return axios.get(`https://swapi.dev/api/planets/${start}/`); }

Porcentaje

 const percentage = Math.round((start/finish)*100)

Iteración de solicitudes (usando recursividad)

 async function loop(start, finish, callback) { if (start >= finish) { console.log("got inside if from loop"); return; } await requestCharacters(1) .then((response) => { const percentage = Math.round(((start)/finish)*100) loop(start + 1, finish, callback({ percentage, pageContent: response.data }); }) .catch((error) => console.error(error)); } loop(1, 3, console.log(percentage, pageContent));

Y luego alguna función que devuelve el porcentaje más el objeto obtenido

 loop(1, 3, PrintObjectsFromFetch)

¿Cómo resolver esto?

¡Gracias si leíste hasta el final!

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Esta es la versión no refactorizada. Espero que ayude

 import axios from "axios"; function mountAxiosRequest(url) { return axios.get(url); } const arrayOfPages = (total_pages, baseURL) => Array.from({ length: total_pages }, (v, k) => baseURL.replace("iterator", k + 1) ); const total_pages = 16; const baseURL = "https://swapi.dev/api/people/iterator/"; const arrayOfRequests = (total_pages, baseURL, request) => arrayOfPages(total_pages, baseURL).map((url) => request(url)); function PrintPercentageAndData(data) { console.log("from map percentage: ", data); } const mapResponses = (response, total) => response.map((row, index) => { const indexFromOne = index + 1; const percentage = Math.round((indexFromOne / total) * 100); return { percentage, data: row }; }); const promiseArray = (arrayOfRequests) => Promise.all(arrayOfRequests); function GetPercentageAndData(callback, baseURL, request) { const total_pages = 10; const requestsArray = arrayOfRequests(total_pages, baseURL, request); const promissesArray = promiseArray(requestsArray); promissesArray .then((results) => { const result = PrintPercentageAndData( mapResponses(results, results.length) ); if (result !== undefined) callback(result); }) .catch((error) => console.error("error from promissesArray : ", error)); } GetPercentageAndData( PrintPercentageAndData, "https://swapi.dev/api/species/iterator/", mountAxiosRequest );
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!