Heim  >  Artikel  >  Web-Frontend  >  Wie rufe ich den aktuellen Wert eines RxJS-Subjekts oder Observables in Angular ab?

Wie rufe ich den aktuellen Wert eines RxJS-Subjekts oder Observables in Angular ab?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-04 00:14:30764Durchsuche

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

Ermitteln des aktuellen Werts eines RxJS-Subjekts oder einer Observable

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.

Lösung: BehaviorSubject verwenden

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>

Fazit

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn