web-dev-qa-db-fra.com

Cas d'utilisation de l'opérateur observable .do () (rxjs)

Le contexte :

Je construis une application angular 2 (avec une API Firebase). J'utilise le module AngularFire. Je me demandais comment je pouvais mélanger la méthode canActivate avec AngularFire. auth Observable, et j'ai trouvé cet article . La réponse consiste à faire en sorte que la méthode canActivate renvoie un Observable<boolean>:

canActivate(): Observable<boolean> {
  return this.auth
    .take(1)
    .map((authState: FirebaseAuthState) => !!authState)
    .do(authenticated => {
      if (!authenticated) this.router.navigate(['/login']);
    });
}

C'est la première fois que je vois l'opérateur Observable do, et je ne comprends pas ce qu'il fait vraiment? Le doc officiel ne m'a pas aidé et je n'ai pas trouvé d'exemples décents.

Question:

Quelqu'un peut-il apporter ici quelques exemples d'utilisation de .do()? Et différence avec .subscribe()?

35
soywod

.do() est d'exécuter du code pour chaque événement. Une différence par rapport à .map() est que la valeur de retour de .do() est ignorée et ne modifie pas la valeur que l'abonné reçoit.

51
Günter Zöchbauer