Tengo una API donde devuelve resultados limitados de datos, el valor límite no puede ser superior a 1000
> https://api.source.com?start=0&limit=1000 //first call > https://api.source.com?start=1001&limit=1000 //second call > https://api.source.com?start=2001&limit=1000 //third call > https://api.source.com?start=3001&limit=1000 //fourth call { "success": true, "message": "Verticals Returned", "response": { "start": 0, "limit": 1000, "returned": 1000, "total": 3230, "data": [ { "verticalID": 3, "verticalName": "Galaxies", "status": "Active", "groupID": 1, "createdOn": "2022-03-15 05:30:06", "groupName": "Solar", "totalOffers": 0 } ] } }¿Cómo iterar esto usando un bucle? while o cualquier otro bucle también está bien.
he probado con
limit =1000 start = 0; total = undefined; for(i=start;;i+=returned) { y = call("https://api.source.com?start="+start+"&limit="+limit) total = y.total start = y.start returned = y.returned }const apiLoop = async () =>{ let counter = 0; const limit = 1000; while (true) { try{ let y = await call("https://api.source.com?start="+(counter*limit)+"&limit="+limit); if(y==null) break; counter++; } catch(e){ console.log(e.message); break; } } } apiLoop(); Dependiendo del valor que obtenga la variable y , cuando el parámetro de consulta de start sea mayor que la longitud total, la condición de romper el ciclo será diferente. Aquí asumo que y debería ser null . Tenga en cuenta que la función de call debe ser async y esperada en este bloque de código. Debido a que cada llamada API en la iteración debe obtener el resultado primero y luego, en función del resultado, la función decide si continuar o no con el ciclo while .