当前位置: 首页 > 知识库问答 >
问题:

如何获得RxJS对象或可观测的当前值?

潘秦斩
2023-03-14
import {Storage} from './storage';
import {Injectable} from 'angular2/core';
import {Subject}    from 'rxjs/Subject';

@Injectable()
export class SessionStorage extends Storage {
  private _isLoggedInSource = new Subject<boolean>();
  isLoggedIn = this._isLoggedInSource.asObservable();
  constructor() {
    super('session');
  }
  setIsLoggedIn(value: boolean) {
    this.setItem('_isLoggedIn', value, () => {
      this._isLoggedInSource.next(value);
    });
  }
}

共有1个答案

孙星鹏
2023-03-14

subjectobservable没有当前值。当一个值被发出时,它被传递给订阅服务器,并且可观察的就用它完成了。

如果您想要一个当前值,请使用BehaviorSubject,它正是为此目的而设计的。BehaviorSubject保留最后一个发出的值,并立即将其发出给新的订阅服务器。

它还有一个方法getValue()来获取当前值。

 类似资料:
  • 我想计算单个可观测物体的排放量之间的差异。 如果一个可观测的物体发出一个新的值,有没有办法同时得到它当前和以前的发射?我想要这样的东西: 我该怎么做呢?我是否需要将每个发射存储在一个上限变量中,或者是否有一种奇特的RxJS方法来实现这一点?

  • 问题内容: 我有一个Angular 2服务: 一切正常。但是我还有另一个不需要订阅的组件,它只需要在某个时间点获取isLoggedIn的当前值即可。我怎样才能做到这一点? 问题答案: 一个或没有的电流值。发出值时,将其传递给订户并使用它完成。 如果要使用当前值,请使用专门用于该目的的值。保留最后发出的值,并立即将其发送给新订户。 它还具有一种获取当前值的方法。

  • 使用rxjsv6 所以我有多个我想要跟踪/观察的变量,当它们中的任何一个发生变化时,触发一个可观察对象来调用一个API,该API然后根据这些变量更新其他内容。 我想我可能会在上触发一个事件来强制可观察对象做一些事情,但它不会根据我想要的返回结果 例如。 然而,在可观测数据上没有订阅方法。我试图修改我的另一个观察值(这是可行的)

  • 我有2个API调用第二个调用使用第一个调用返回的东西。有了promise,这很容易: 我将如何使用可观测数据来实现这一点?

  • 在组件中: 在init上,我可以观察到 如何获取当前值,如?

  • 我有一个沙盒,它订阅了一个消息流,我想过滤该流,以查找已发送到或从特定用户使用另一个组件中指定的路由参数接收的消息。 messages.sandbox.ts: messages.detail.container.ts this.matching消息$似乎只包括this.received消息$但是我知道this.sent消息$不是空,因为我可以在我的模板中使用它没有问题。 我是不是遗漏了一些合并观测