RxJS サブジェクトまたはオブザーバブルの現在値の取得
Angular アプリケーションでは、データの共有と通信にサブジェクトまたはオブザーバブルを使用するのが一般的です。ただし、変数とは異なり、サブジェクトとオブザーバブルは本質的に現在の値を保持しません。値を発行すると、その値はすぐにサブスクライバーに渡され、オブザーバブルはそのタスクを完了します。
シナリオ:
次のことを表す Angular サービスに isLoggedIn サブジェクトがあるとします。ユーザーのログインステータス。 isLoggedIn オブザーバブルをサブスクライブせずに、別のコンポーネントが現在のログイン ステータスを取得できるようにしたいとします。
解決策:
これに対処するために、RxJS は特別に設計された BehaviorSubject を提供します。現在の値を提供します。サブジェクトやオブザーバブルとは異なり、BehaviorSubject は最後に発行された値を記憶し、新しくサブスクライブされたオブザーバーにすぐに発行します。
実装:
BehaviorSubject を利用するには、 SessionStorage サービスは次のようになります。
@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); }); } }
コンポーネントでは、BehaviorSubject の getValue() メソッドを使用して現在のログイン ステータスを取得できます。
import {SessionStorage} from 'app/services/session-storage.service'; ... const sessionStorage = new SessionStorage(); const isLoggedIn = sessionStorage.isLoggedInSource.getValue();
BehaviorSubject を使用すると、次のようになります。サブスクリプションに依存せずに isLoggedIn サブジェクトの現在の値を取得するメカニズム。これにより、アプリケーション設計とデータ処理の柔軟性が向上します。
以上がAngular で RxJS サブジェクトまたはオブザーバブルの現在の値を取得する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。