Quiero una variable state$: un flujo observable de objetos, con cada objeto que contenga un miembro nextState$ de tipo observable. Esta propiedad nextState$ envía un elemento único correspondiente al siguiente estado, y así sucesivamente...
ejemplo:
const states$ = of({ nextState$: createObservableWithNextState$() }).pipe( switchMap(state => state.nextState$), switchMap(state => state.nextState$), switchMap(state => state.nextState$), switchMap(state => state.nextState$), ... )por supuesto que no funciona, al menos por dos razones:
Por supuesto, podría crear mi propio observable desde cero, pero antes me gustaría saber si sería posible con los operadores rxj existentes. Alguna idea ?...
Expand debería hacer lo que buscas de manera bastante simple.
Supongo que en algún momento llegará a un estado sin nextState$, pero puede cambiar esa condición fácilmente.
const states$ = of({ nextState$: createObservableWithNextState$() }).pipe( expand(state => state.nextState$ != null? state.nextState$ : EMPTY) ); Expand está más cerca de mergeMap que de switchMap . Puede establecer simultáneo en 1 para que funcione como concatMap . Si realmente está buscando un comportamiento similar a switchMap, esto se vuelve un poco más complicado.