Maison > interface Web > js tutoriel > le corps du texte

Comment récupérer la valeur actuelle d'un sujet RxJS ou observable en Angular ?

Mary-Kate Olsen
Libérer: 2024-11-04 00:14:30
original
763 Les gens l'ont consulté

How to Retrieve the Current Value of an RxJS Subject or Observable in Angular?

Obtention de la valeur actuelle d'un sujet ou d'un observable RxJS

Dans les applications angulaires, les observables sont couramment utilisés pour diffuser des données entre des composants et des services. Une question courante qui se pose est de savoir comment récupérer la valeur actuelle d'un observable sans s'y abonner.

Dans le code fourni, le service SessionStorage utilise un sujet nommé _isLoggedInSource pour émettre l'état de connexion actuel. Bien que la propriété isLoggedIn expose cet observable, elle n'a pas de concept de valeur actuelle.

Solution : utiliser BehaviorSubject

La solution à ce problème réside dans l'utilisation d'un BehaviorSubject au lieu d'un sujet. Un BehaviorSubject garde une trace de la valeur émise la plus récente et l'émet immédiatement aux nouveaux abonnés.

<code class="typescript">import {BehaviorSubject} from 'rxjs/BehaviorSubject';

@Injectable()
export class SessionStorage extends Storage {
  private _isLoggedInSource = new BehaviorSubject<boolean>(false);
  isLoggedIn = this._isLoggedInSource.asObservable();
  constructor() {
    super('session');
  }
  setIsLoggedIn(value: boolean) {
    this.setItem('_isLoggedIn', value, () => {
      this._isLoggedInSource.next(value);
    });
  }
}</code>
Copier après la connexion

Maintenant, vous pouvez récupérer l'état de connexion actuel à l'aide de la méthode getValue() de BehaviorSubject :

<code class="typescript">isLoggedIn = sessionService._isLoggedInSource.getValue();</code>
Copier après la connexion

Conclusion

En utilisant BehaviorSubject, vous pouvez accéder à la valeur actuelle d'un observable même sans vous y abonner. Ceci est particulièrement utile lorsque vous devez lire la dernière valeur émise à des points spécifiques de votre code.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal