ホームページ >ウェブフロントエンド >jsチュートリアル >Observable または Subject の現在の値を取得するにはどうすればよいですか?

Observable または Subject の現在の値を取得するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-03 13:54:031046ブラウズ

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

Observable または Subject の現在値の取得

この問い合わせは、Observable または Subject から現在値を抽出するという課題に関係します。 Observable の場合、その目的は、到着時にサブスクライバーに値をプッシュすることです。発行されると、Observable は値を破棄します。したがって、Observable の現在の値に直接アクセスすることは実現できません。

Subject の Current Value

Subject は、Observable とは対照的に、最後に発行された値の概念を維持します。価値。ただし、この値は本質的に Subject 自体の外部からアクセスできるわけではありません。

BehaviorSubject の使用

このジレンマの解決策は、BehaviorSubject を使用することです。これはサブジェクトのように動作しますが、大幅な拡張機能を提供します。最後に発行された値を保存し、新しいサブスクライバーが即座に利用できるようにします。さらに、現在の値を明示的に取得するための getValue() メソッドも提供します。

提供された Angular サービス内に BehaviorSubject を組み込むことで、目的の機能を実現できます。

<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>

この変更により、次のことが可能になります。 getCurrentValue() を使用して isLoggedIn の最新の値を取得します。その後、サブスクリプションを必要とせずにこの値を活用できます。

以上がObservable または Subject の現在の値を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。