取得RxJS 主題或可觀察物件的目前值
在Angular 應用程式中,通常使用主題或可觀察物件進行資料共享和通信。然而,與變數不同,主題和可觀察量本質上不具有當前值。當它們發出一個值時,它會立即傳遞給訂閱者,並且可觀察物件完成其任務。
場景:
假設您在 Angular 服務中有一個 isLoggedIn 主題,它代表使用者的登入狀態。您希望另一個元件在不訂閱 isLoggedIn observable 的情況下檢索目前登入狀態。
解決方案:
為了解決這個問題,RxJS 提供了一個BehaviorSubject,它是專門設計的提供當前值。與主題和可觀察量不同,BehaviorSubject 會記住最後發出的值並立即將其發送給新訂閱的觀察者。
實作:
要使用BehaviorSubject,您可以修改您的SessionStorage 服務如下:
@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); }); } }
在您的元件中,您可以使用BehaviorSubject 的getValue() 方法檢索當前登入狀態:
import {SessionStorage} from 'app/services/session-storage.service'; ... const sessionStorage = new SessionStorage(); const isLoggedIn = sessionStorage.isLoggedInSource.getValue();
透過使用BehaviorSubject,您可以一種無需依賴訂閱即可獲取isLoggedIn 主題當前值的機制,為您的應用程式設計和數據處理提供更大的靈活性。
以上是如何在 Angular 中取得 RxJS 主題或可觀察物件的目前值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!