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

87
Views
¿Cómo puedo mejorar este hacer paginado mientras async espera la solicitud GET en Javascript (NodeJS)?

Estoy aprendiendo JavaScript (Node.js - usando la plataforma Pipedream). He estado escribiendo guiones para ayudar a automatizar algunas pequeñas tareas en mi trabajo diario.

Estoy creando uno que genera un informe sobre las interacciones recientes con los clientes.

Como parte de esto, estoy usando axios para obtener "compromisos" de la API de Hubspot (básicamente, una lista de identificadores que usaré en solicitudes posteriores).

La API devuelve respuestas paginadas. Me he encontrado con la paginación anteriormente y entiendo el principio detrás de esto, pero nunca he escrito un script para manejarlo. Esta es mi primera

Funciona. Pero siento que podría mejorarse. A continuación he comentado cómo lo he abordado.

El punto final devuelve hasta 100 valores 'por página' junto con un "hasMore":true y un valor "offset":987654321 que se puede pasar como parámetro de consulta en solicitudes posteriores (si tieneMás === verdadero).

Ejemplo de respuesta de la API:

 {"results":[1234,1235,1236],"hasMore":true,"offset":987654321}

Mi código:

 import axios from 'axios'; //function to get each page of data async function getAssoc(req){ const options = { method: 'GET', url: `https://api.hubapi.com/${req}`, headers: { Authorization: `Bearer ${auths}`, }, }; return await axios(options); } //declare array in which to store all 'associations' const assocs = []; //store the ID that I get in an earlier step const id = vid; //declare variable in which to temporarily store each request response data var resp; //declare query parameter value, initially blank, but will be assigned a value upon subsequent iterations of do while var offset = ''; do { //make request and store response in resp variable resp = await getAssoc(`crm-associations/v1/associations/${id}/HUBSPOT_DEFINED/9?offset=${offset}`); //push the results into my 'assocs' (associations) array resp.data.results.forEach(element => assocs.push(element)); //store offset value for use in next iteration's request offset = resp.data.offset; } while (resp.data.hasMore); //hasMore will be false when there's no more records to request return assocs;

Siento que podría mejorarse porque:

  1. El bucle DO WHILE, creo, está haciendo solicitudes secuenciales. ¿Es el paralelo una opción mejor/más rápida/más eficiente? (EDITAR Gracias @Evert - ¡por supuesto que no puedo hacer solicitudes paralelas debido a la compensación!)
  2. Estoy reasignando nuevos valores a var s en lugar de usar const s, lo que parece simple e intuitivo en mi mente de principiante, pero no entiendo una mejor manera en este caso.
  3. Agradecería cualquier comentario o sugerencia sobre cómo puedo mejorar esto para mi propio aprendizaje.

Gracias de antemano por su tiempo y cualquier ayuda que pueda ofrecer.

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