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 サイトの他の関連記事を参照してください。