Maison > interface Web > js tutoriel > Comment obtenir la valeur actuelle d'un sujet RxJS ou observable en Angular ?

Comment obtenir la valeur actuelle d'un sujet RxJS ou observable en Angular ?

DDD
Libérer: 2024-11-03 01:52:29
original
406 Les gens l'ont consulté

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

Obtention de la valeur actuelle du sujet ou de l'observable RxJS

Dans les applications angulaires, il est courant d'utiliser des sujets ou des observables pour le partage de données et la communication. Cependant, contrairement aux variables, les sujets et les observables n’ont pas intrinsèquement de valeur actuelle. Lorsqu'ils émettent une valeur, celle-ci est immédiatement transmise aux abonnés et l'observable termine sa tâche.

Scénario :

Supposons que vous ayez un sujet isLoggedIn dans un service Angular qui représente le statut de connexion de l'utilisateur. Vous souhaitez qu'un autre composant récupère l'état de connexion actuel sans vous abonner à l'observable isLoggedIn.

Solution :

Pour résoudre ce problème, RxJS propose un BehaviorSubject, spécialement conçu pour fournir une valeur actuelle. Contrairement aux sujets et aux observables, un BehaviorSubject se souvient de la dernière valeur émise et l'émet immédiatement aux observateurs nouvellement abonnés.

Mise en œuvre :

Pour utiliser un BehaviorSubject, vous pouvez modifier votre Service SessionStorage comme suit :

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

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

import {SessionStorage} from 'app/services/session-storage.service';
...
const sessionStorage = new SessionStorage();

const isLoggedIn = sessionStorage.isLoggedInSource.getValue();
Copier après la connexion

En utilisant BehaviorSubject, vous avez un mécanisme pour obtenir la valeur actuelle de votre sujet isLoggedIn sans dépendre des abonnements, offrant une plus grande flexibilité dans la conception de votre application et la gestion des données.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal