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
DDDoriginal
2024-11-03 01:52:29416parcourir

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);
    });
  }
}

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();

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!

Déclaration:
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