Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

179
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda