Maison > interface Web > js tutoriel > le corps du texte

Comment accéder à la valeur actuelle d'un sujet RxJS ou d'un observable en angulaire ?

Linda Hamilton
Libérer: 2024-11-01 07:12:31
original
519 Les gens l'ont consulté

How to access the current value of an RxJS Subject or Observable in Angular?

Accès à la valeur actuelle du sujet ou de l'observable RxJS

Dans les services angulaires, il est courant d'utiliser des sujets et des observables RxJS pour gérer l'état. Cependant, ces constructions ne permettent pas naturellement de récupérer leur valeur actuelle en dehors de l’abonnement. Cet article explique comment accéder à la valeur actuelle dans de tels scénarios.

Considérez le service Angular suivant qui utilise un sujet pour gérer une propriété booléenne isLoggedIn :

<code class="typescript">import {Subject} from 'rxjs/Subject';
import {Injectable} from 'angular2/core';

@Injectable()
export class SessionStorage {
  private _isLoggedInSource = new Subject<boolean>();
  isLoggedIn = this._isLoggedInSource.asObservable();
  ...
}</code>
Copier après la connexion

Dans certains cas, vous pouvez Vous devez accéder à la valeur actuelle de isLoggedIn sans vous y abonner. Cela n'est pas possible avec un sujet normal, car il émet uniquement des valeurs à ses abonnés et ne stocke pas son état actuel.

Solution : utiliser BehaviourSubject

Pour surmonter ce problème limitation, envisagez de passer à BehaviorSubject, un type RxJS spécialisé qui maintient un tampon interne pour stocker la dernière valeur émise.

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

@Injectable()
export class SessionStorage {
  private _isLoggedInSource = new BehaviorSubject<boolean>(false);
  isLoggedIn = this._isLoggedInSource.asObservable();
  ...
}</code>
Copier après la connexion

Par rapport au sujet, BehaviorSubject présente deux avantages principaux :

  1. Lorsque de nouveaux abonnés commencent à écouter, il émet immédiatement la dernière valeur qu'il a stockée.
  2. Il expose une méthode getValue() qui fournit un accès programmatique à la valeur actuelle.

Exemple avec BehaviorSubject :

En utilisant BehaviorSubject, vous pouvez accéder à la valeur actuelle de isLoggedIn même sans vous abonner :

<code class="typescript">const sessionStorage = new SessionStorage();
const isLoggedInCurrentValue = sessionStorage._isLoggedInSource.getValue();
console.log(isLoggedInCurrentValue); // True or False</code>
Copier après la connexion

En résumé, si vous avez besoin d'accéder à la valeur actuelle de un sujet RxJS ou observable, envisagez de passer à BehaviorSubject, qui fournit à la fois une émission immédiate pour les nouveaux abonnés et une méthode getValue() pour une récupération directe.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal