In Angular-Anwendungen werden Observablen häufig zum Streamen von Daten zwischen Komponenten und Diensten verwendet. Eine häufig gestellte Frage ist, wie man den aktuellen Wert eines Observablen abrufen kann, ohne es zu abonnieren.
Im bereitgestellten Code verwendet der SessionStorage-Dienst einen Betreff namens _isLoggedInSource, um den aktuellen Anmeldestatus auszugeben. Während die isLoggedIn-Eigenschaft dieses Observable verfügbar macht, verfügt sie über kein Konzept eines aktuellen Werts.
Die Lösung für dieses Problem liegt in der Verwendung eines BehaviorSubject anstelle eines Subject. Ein BehaviorSubject verfolgt den zuletzt ausgegebenen Wert und gibt ihn sofort an neue Abonnenten weiter.
<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>
Jetzt können Sie den aktuellen Anmeldestatus mithilfe der getValue()-Methode von BehaviorSubject abrufen:
<code class="typescript">isLoggedIn = sessionService._isLoggedInSource.getValue();</code>
Durch die Verwendung von BehaviorSubject können Sie auf den aktuellen Wert eines Observablen zugreifen, auch ohne es zu abonnieren. Dies ist besonders nützlich, wenn Sie den zuletzt ausgegebenen Wert an bestimmten Stellen in Ihrem Code lesen müssen.
Das obige ist der detaillierte Inhalt vonWie rufe ich den aktuellen Wert eines RxJS-Subjekts oder Observables in Angular ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!