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

128
Views
obtengo un bucle infinito al intentar paginar datos

Estoy tratando de paginar algunos datos. El límite de resultados por consulta es 300 y puedo usar un desplazamiento para pasar a la página siguiente. Estoy intentando hacer esto con un ciclo while así:

 async function fetchData ( contractAddress, tokenID ) { const url = `https://api.website.io/api/v1/events?asset_contract_address=${contractAddress}&token_id=${tokenID}&offset=0&limit=299`; logger.log(url); const data = await internalFetch(url, { headers: { 'Accept': 'application/json', 'X-Api-Key': API_KEY, }, method: 'get', timeout: 10000, // 10 secs }) var array = data.data.asset_events; var offset = 0; var tempResponse = array; while (tempResponse.length != 0) { var urlPage = `https://api.website.io/api/v1/events?asset_contract_address=${contractAddress}&token_id=${tokenID}&offset=${offset}&limit=299`; logger.log(urlPage + " url2"); var nextPage = await internalFetch(urlPage, { headers: { 'Accept': 'application/json', 'X-Api-Key': API_KEY, }, method: 'get', timeout: 10000, // 10 secs }) tempResponse = nextPage.data.asset_events; array.concat(tempResponse); offset = array.length; logger.log("length " + offset); } return array; }

Algo en el ciclo while no funciona correctamente y ejecuta un ciclo infinito. La URL que se consulta es la misma cada vez [con el desplazamiento en 299], por lo que se devuelve la misma respuesta y tempResponse.length nunca es == 0, terminando con un bucle while. ¿Alguien puede detectar el problema?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Es esta línea, donde establece el desplazamiento:

 offset = array.length;

Esto siempre devolverá el mismo número, suponiendo que haya más de dos páginas de resultados. La primera vez obtendrá la longitud de la matriz, y luego, cuando la use en la búsqueda, obtendrá los resultados a partir de 300.

Pero esa matriz también tendrá una longitud de 299, por lo que envía el mismo número de desplazamiento y solicita la segunda página nuevamente. Pienso:

 offset += array.length;

debería funcionar, aunque esto puede repetir el último registro de la llamada anterior, en cuyo caso desearía offset += array.length + 1; .

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!