首頁 >web前端 >js教程 >如何檢索可觀察值或主題的當前值?

如何檢索可觀察值或主題的當前值?

DDD
DDD原創
2024-11-03 13:54:031047瀏覽

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

檢索可觀察值或主題的當前值

此查詢涉及從可觀察值或主題中提取當前值的挑戰。就 Observables 而言,它們的目的是在訂閱者到達時將值推送給訂閱者。一旦發出,Observable 就會處理這些值。因此,直接存取 Observable 的當前值是不可行的。

Subject 的目前值

與 Observable 相比,Subject 維護最近發出的概念價值。然而,這個值在Subject本身之外本質上是不可存取的。

利用BehaviorSubject

解決這個困境的一個解決方案是使用BehaviorSubject。它的操作類似於主題,但它提供了顯著的增強:它儲存最後發出的值並使其立即可供新訂閱者使用。此外,它還提供了 getValue() 方法來明確檢索目前值。

透過將BehaviorSubject 合併到提供的 Angular 服務中,您可以實現所需的功能:

<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 的最新值。然後,您無需訂閱即可利用該價值。

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

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