Me gustaría saber si es posible detectar cuándo la condición del filtro rxjs no es cierta.
Esto es lo que tengo:
of(1) .pipe( map((d) => d + 1), filter((d) => d === 0), map((d) => d + 1), // this will go in because of the filter ) .toPromise() .then((d) => console.log(d)) // display indefined .catch(() => console.log("ERRRRRROOOOOOR")) // do not display :(
En este caso, me gustaría devolver un dato específico (o al menos arrojarlo) cuando la condición del filtro no es verdadera.
Intenté agregar parámetros al filtro.
filter(filter((d) => d === 0), "john doe")
Pero esto no muestra la cadena,
Supongo que el equivalente en fp-ts es atrapar la izquierda, pero no sé si puedes hacer programación funcional con rxjs o si solo puedes trabajar con observable. El hecho de que pueda usar tuberías y múltiples operadores permite el uso de esta biblioteca en mi proyecto, por lo que será bueno evitar cambiar la biblioteca.
Muchas gracias !
¡Necesitas lanzar un error para poder atraparlo!
of(1) .pipe( map((d) => d + 1), switchMap((d) => { if (d === 0) { return of(d + 1); } throwError(() => new Error('Erroooooor')); }) ) .toPromise() .then((d) => console.log(d)) // display indefined .catch(() => console.log('ERRRRRROOOOOOR')); // thrown if d !=== 0
También podría escribirse usando el operador iif
of(1) .pipe( map((d) => d + 1), switchMap((d) => iif( () => d === 0, of(d + 1), throwError(() => new Error('Erroooooo')) ) ) ) .toPromise() .then((d) => console.log(d)) // display indefined .catch(() => console.log('ERRRRRROOOOOOR')); // thrown if d !=== 0