Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

89
Vistas
¿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
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda