Búsqueda de sitios web

angular - Console.Log no se ejecuta cuando está dentro del operador RXJS Tap


Tengo los siguientes observables:

this.authenticationService.isSignedIn() -> Observable<Boolean>

this.user$ -> Observable<UserModel>

Necesito verificar una condición basada en ambos, así que intenté:

zip(this.authenticationService.isSignedIn(), this.user$).pipe(
  map(([isSignedIn, user]: [boolean, UserModel]) => isSignedIn && user.claims))
); 

Debido a que estoy obteniendo un resultado inesperado, intenté revisar las cosas usando:

zip(this.authenticationService.isSignedIn(), this.user$).pipe(
  tap(([isSignedIn, user]: [boolean, UserModel]) => {
    console.log(isSignedIn);
    console.log(user);
  })
);

Pero los dos console.log no se ejecutan. ¿Qué me está faltando?

Respuesta #1

podrías estar perdiendo una suscripción. Todas las cosas de rxjs son perezosas y no se ejecutarán hasta que se haga una suscripción. si no necesitas manejar el resultado de otra manera excepto por tu operador tap, simplemente agrega .subscribe() al final

zip(...).pipe(
  tap(...)
).subscribe();