首頁 >web前端 >js教程 >如何在 Angular 中檢索 RxJS 主題或可觀察物件的目前值?

如何在 Angular 中檢索 RxJS 主題或可觀察物件的目前值?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-04 00:14:30820瀏覽

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

取得 RxJS 主題或可觀察物件的目前值

在 Angular 應用程式中,可觀察物件通常用於在元件和服務之間傳輸資料。出現的常見問題是如何在不訂閱的情況下檢索可觀察量的當前值。

在提供的程式碼中,SessionStorage 服務使用名為 _isLoggedInSource 的主題來發出目前登入狀態。雖然 isLoggedIn 屬性公開了這個可觀察值,但它沒有當前值的概念。

解決方案:使用BehaviorSubject

這個問題的解決方案在於使用BehaviorSubject而不是Subject。 BehaviorSubject 追蹤最近發出的值並立即將其傳送給新訂閱者。

<code class="typescript">import {BehaviorSubject} from 'rxjs/BehaviorSubject';

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

現在,您可以使用BehaviorSubject 的getValue() 方法來擷取目前登入狀態:

<code class="typescript">isLoggedIn = sessionService._isLoggedInSource.getValue();</code>

結論

透過使用BehaviorSubject,即使不訂閱它,您也可以存取可觀察對象的目前值。當您需要讀取程式碼中特定點的最新發出值時,這特別有用。

以上是如何在 Angular 中檢索 RxJS 主題或可觀察物件的目前值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn