Búsqueda de sitios web

typescript - RxJs - esperando a que todos los Observables terminen


Tengo este fragmento de código:

myModel.tags
       .filter(...)
       .map(...)
       .forEach(t => context.dispatch(new MyAction(t)))

dispatch devuelve un Observable.
Me gustaría ejecutar otro código de RxJs solo cuando todos esos Observables hayan finalizado.
¿Es eso posible?

Respuesta #1

Si quieres saber cuándo todos los Observables se completan, tienes que reunirlos todos en un arreglo y luego usar idealmente forkJoin:

const obs = myModel.tags
  .filter(...)
  .map(...)
  .map(t => context.dispatch(new MyAction(t)))

const done$ = forkJoin(...obs).subscribe(...);

El método de creación de observable forkJoin emitirá solo una vez con el arreglo de todas las respuestas y luego se completará.