¿Cómo hacer un bucle dynamic sobre múltiples promesas en un bucle for mientras se usa fetch?

Esto es lo que funciona:

const limit = 1000 // fetchMyProducts(page, limit, flag) return fetchMyProducts(1, 1, true) .then(function (products) { return fetchMyProducts(2, limit, false) }).then(function (totalProducts) { return fetchMyProducts(3, limit, false) }).then(function (totalProducts) { return fetchMyProducts(4, limit, false) }).then(function (totalProducts) { return fetchMyProducts(5, limit, false) }).then(function (totalProducts) { return fetchMyProducts(6, limit, false) }).then(function (totalProducts) { return fetchMyProducts(7, limit, false) }) 

Estoy tratando de obtener todos los productos en nuestro sistema a través de fetch. El problema es que, en este momento, sé cuántos productos hay, pero en 1 año / 3 años … ¿quién sabe?

Estoy tratando de hacer un bucle dynamic y obtener todos los productos.

He intentado esto, sin embargo, no parece ser llamado en absoluto.

  return fetchMyProducts(1, 1, true) .then(function (numberOfProducts) { let pages = Math.ceil(numberOfProducts / 1000) + 1; console.log(pages); return getAllProducts = () => { for (let i = 1; i < pages; i++) { const element = array[i]; return fetchMyProducts(2, limit, false) } } }).then(... something else) 

¿Hay una manera de pasar por encima de una promesa de búsqueda y devolver algo cuando haya terminado, y luego continuar haciendo otra cosa?

Estás buscando

 const limit = 1000 let chain = Promise.resolve(); for (let i=1; i<8; i++) { chain = chain.then(function(products) { return fetchMyProducts(i, limit, false) }); } return chain; 

que construye dinámicamente la cadena de promesas que enunciaste.


Para una solución más simple y eficiente, considere usar async / await :

 const limit = 1000 for (let i=1; i<8; i++) { const products = await fetchMyProducts(i, limit, false); } return;