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

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

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 Report

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