1. ホーム
  2. ジャバスクリプト

[解決済み】RxJSのSubjectやObservableの現在値を取得する方法は?

2022-04-16 16:14:19

質問

Angular 2のサービスを持っています。

import {Storage} from './storage';
import {Injectable} from 'angular2/core';
import {Subject}    from 'rxjs/Subject';

@Injectable()
export class SessionStorage extends Storage {
  private _isLoggedInSource = new Subject<boolean>();
  isLoggedIn = this._isLoggedInSource.asObservable();
  constructor() {
    super('session');
  }
  setIsLoggedIn(value: boolean) {
    this.setItem('_isLoggedIn', value, () => {
      this._isLoggedInSource.next(value);
    });
  }
}

すべてうまくいきます。しかし、私は購読する必要のない別のコンポーネントを持っています。それは、ある時点でisLoggedInの現在の値を取得する必要があるだけです。どうすればいいのでしょうか?

解決方法は?

A Subject または Observable は現在の値を持っていない。値が発せられると、その値はサブスクライバーに渡され Observable が行われます。

現在の値を持ちたい場合は BehaviorSubject は、まさにその目的のために設計されたものです。 BehaviorSubject は最後に発行された値を保持し、それを新しい購読者に直ちに発行します。

また getValue() で現在の値を取得します。