检索可观察值或主题的当前值
此查询涉及从可观察值或主题中提取当前值的挑战。就 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中文网其他相关文章!