Buenas amig@s, vengo a recurrir a vuestra ayuda.
Tengo un array de productos, necesito que por cada producto llamar a un método del servicio que me reactiva el producto pasándole el producto. A su vez quiero ir mostrando el número de productos que se van "reactivando" según va pasando el bucle (algo como 1/5, 2/5, etc.).
¿Me puede ayudar alguien please?
¿Y cuál es el error? ¿Y cómo quieres mostrar los productos activados?
Debería ser algo así
arrayProductos.forEach(
producto => productoService.reactivar(producto).subscribe(result => {
// respuesta
}));
El código es como el de #3
Pero el problema de ese código es que el bucle va iterando sin resolver uno a uno los subscribes. Lo que quiero es que itere el foreach, se resuelva la petición y hasta que no se resuelva la petición no pase a la siguiente iteración. No sé si me explico bien.
#4 Ah, claro, es asíncrono. Tal vez podrías hacerlo de manera recursiva; en vez de recorrer los propios elementos deberías iterar índices y cuando termine un subscribe llamar a la misma función pero con el índice siguiente, y así sucesivamente.
Observable.of(misProductos)
.pipe(
mergeMap(producto => this.miservicio.activoProducto(producto.id))
)
.subscribe((result) => //incremento mi contador//)
Conviertes tu array en un observable, devuelves por cada producto que tengas un observable con la llamada a tu activación, te suscribes, y ahí incrementas tu contador para mostrar los productos activados, cada vez que resuelve una llamada, se te notificara.
El control de errores ya pa ti xD.
Ni idea de si los operadores de rxjs son así en la versión que tenéis de la librería y si son asi exactamente, lo he hecho un sec sin mirar nada xD.