Maison  >  Article  >  interface Web  >  Comment récupérer la valeur actuelle d'un observable ou d'un sujet ?

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

DDD
DDDoriginal
2024-11-03 13:54:031002parcourir

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

Récupération de la valeur actuelle d'un observable ou d'un sujet

Cette enquête concerne le défi d'extraire la valeur actuelle d'un observable ou d'un sujet. Dans le cas des Observables, leur objectif est de transmettre des valeurs aux abonnés à leur arrivée. Une fois émis, l'Observable dispose des valeurs. Par conséquent, accéder directement à la valeur actuelle d'un observable n'est pas réalisable.

Valeur actuelle du sujet

Les sujets, contrairement aux observables, maintiennent une notion de la valeur émise la plus récente. valeur. Cependant, cette valeur n'est pas intrinsèquement accessible en dehors du sujet lui-même.

Utilisation de BehaviorSubject

Une solution à ce dilemme est l'utilisation de BehaviorSubject. Il fonctionne comme un Sujet, mais apporte une amélioration significative : il stocke la dernière valeur émise et la met instantanément à disposition des nouveaux abonnés. De plus, il propose une méthode getValue() pour récupérer explicitement la valeur actuelle.

En incorporant BehaviorSubject dans le service Angular fourni, vous pouvez obtenir la fonctionnalité souhaitée :

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

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

  getCurrentValue(): boolean {
    return this._isLoggedInSource.getValue(); // Access the current value using `getValue()`
  }
}</code>

Cette modification permet vous devez récupérer la dernière valeur de isLoggedIn en utilisant getCurrentValue(). Vous pouvez ensuite exploiter cette valeur sans avoir besoin d'abonnement.

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