小编典典

如何获取 RxJS Subject 或 Observable 的当前值?

all

我有一个 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 的当前值。我怎样才能做到这一点?


阅读 130

收藏
2022-04-26

共1个答案

小编典典

A SubjectorObservable没有当前值。当一个值被发出时,它被传递给订阅者并Observable完成它。

如果您想获得当前值,请使用BehaviorSubject专为此目的而设计的。BehaviorSubject保留最后发出的值并立即将其发送给新订阅者。

它还有一种getValue()获取当前值的方法。

2022-04-26