Tengo el siguiente código:
subscriber.pipe( switchMap(data => { this.getData().pipe( map(() => res), catchError(error => { return of(null); }) ); }), switchMap(data => { }) ).subscribe();En caso de error en el primer switchMap, devuelvo (nulo), por lo que el siguiente switchMap recibe datos como nulos. Pero me gusta detener la ejecución en caso de que el primer switchMap vaya al bloque catchError, no debería ejecutar el segundo switchMap. ¿Hay una manera de lograr esto?
Ponga el catchError al final de la tubería.
subscriber.pipe( switchMap(data => { ... }), switchMap(data => { ... }), catchError(error => { return of(null); }) ).subscribe(val => { // val will be null if any error happened })Creo que puedes usar el filtro aquí. desde el error de captura puede devolver nulo y después del primer switchMap puede usar un filtro para filtrar nulo.
subscriber.pipe( switchMap(data => { this.getData().pipe( map(() => res), catchError(error => { return null; }) ); }), filter(v => v), switchMap(data => { }) ).subscribe();EMPTY es un observable que no emite nada y se completa inmediatamente.
subscriber.pipe( switchMap(data => { this.getData().pipe( map(() => res), catchError(_ => EMPTY) ); }), switchMap(data => { }) ).subscribe();