Tengo una API desde la que necesito consultar N páginas de datos. Como no quiero sobrecargar la API, quiero hacerlo secuencialmente y sin bloquear el hilo principal.
El código sería algo como esto:
var res = []; // all data from api var totalPages = 10; var pageSize = 100; for (let page = 0; page < totalPages; page++) { // load using jQuery ajax request $.get('api.php', { page: page, page_size: pageSize }, function(result) { res.push(...result); // add data to resulting array }); }Pero este enfoque tiene algunos problemas:
res a algún otro código que lo necesite.¿Hay alguna manera de solucionar estos problemas sin usar algunas bibliotecas secundarias o promesas? Simplemente viejo javascript de vainilla. Lo siento si algo no está claro, no tengo mucha experiencia en js
Puedes usar una recursividad simple aquí, como esta:
var res = []; // all data from api var totalPages = 10; var pageSize = 100; const loader = page => { // load using jQuery ajax request $.get('api.php', { page: page, page_size: pageSize }, function(result) { res.push(...result); // add data to resulting array if (page < totalPages) loader(++page) else console.log('DONE!'); }); } loader(0);