Maison > Article > interface Web > Comment récupérer la valeur actuelle d'un observable ou d'un sujet ?
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!