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

178
Vistas
¿Cómo establecer un nuevo valor de variable dentro de un ciclo while en Node.js?

Soy nuevo en node.js y estoy tratando de obtener una clave de página inicial de un encabezado de respuesta de API y recorrer las páginas hasta que el encabezado de clave de página ya no exista, lo que significa que llegué a la última página y el ciclo puede terminar.

Por alguna razón, pageKey nunca recibe cambios en el ciclo while de la forma en que lo configuré:

 async function doThis() { let gotAllPages = false; let pageKey; var response = await got(url, options); try { pageKey = response.headers['next-page']; } catch (e) { gotAllPages = true; } while (!gotAllPages) { var pageOptions = { method: 'GET', headers: { Authorization: `xxx`, nextPage: pageKey } }; response = await got(url, pageOptions); try { pageKey = response.headers['next-page']; console.log(pageKey); } catch (e) { console.log("No header value found, loop is done."); gotAllPages = true; break; } } }

Esto termina entrando en un bucle infinito porque la clave de página nunca cambia desde la primera respuesta, por lo que sigue intentando obtener la misma página.

Siendo nuevo en Node.js, realmente no entiendo si hay un problema de alcance con la forma en que configuré las variables o qué, ¡así que agradecería cualquier consejo!

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Los bloques Try-catch no fallan al configurar una variable como indefinida o nula. En lugar de usar un bloque try-catch, use una declaración if.

 pageKey = response.headers['next-page']; if (!pageKey) { console.log("No header value found, loop is done."); gotAllPages = true; break; }
about 4 years ago · Juan Pablo Isaza Denunciar

0

La clave de acceso response.headers['next-page']; no arroja nada, por lo que la captura donde se establece gotAllPages nunca se ejecuta.

Podemos arreglar esto, y ordenar un poco...

 async function getAllPages() { let results = []; let nextPage = 0; let options = { method: 'GET', headers: { Authorization: `xxx` } }; while (nextPage !== undefined) { options.headers.nextPage = nextPage; let response = await got(url, options); results.push(response); nextPage = response.headers['next-page']; } return result; }

Esto supone un par de cosas: (1) que la API espera nextPage === 0 en la primera solicitud, (2) que la API indica que no hay más páginas dejando el encabezado next-page undefined , (3) que la persona que llama quiere la respuesta completa, en lugar de una parte como response.data o response.body , (4) que la persona que llama detecta los errores arrojados aquí y los maneja.

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