檢索可觀察值或主題的當前值
此查詢涉及從可觀察值或主題中提取當前值的挑戰。就 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中文網其他相關文章!