首页 >web前端 >js教程 >如何检索可观察值或主题的当前值?

如何检索可观察值或主题的当前值?

DDD
DDD原创
2024-11-03 13:54:031051浏览

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