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

RxJS可观察性-如何条件可观察的回报

劳和歌
2023-03-14

我对Observables和RxJs是新手,我想对回报进行调整。如果第一个选择器返回某个值,我希望第二个选择器可以观察到。但是如果第一个选择器没有返回那个特定的值,我想返回false,而不是(false)。我已经走了这么远,但这返回了一个可观察的结果

       const condition$: Observable<boolean> =
        this.store.pipe(
            select(this.firstSelector.get()),
            map(item=> {
                if (item !== X) {
                    return of(false)
                } else {
                    return this.store.pipe(select(this.secondSelector.hasValue()))
                }
            })
        )

共有2个答案

齐文林
2023-03-14

因此,如果您想像在代码片段中一样使用if-elle构造,您可以执行以下操作

 const condition$: Observable<boolean> =
        this.store.pipe(
            select(this.firstSelector.get()),
            switchMap(item=> {
                if (item !== X) {
                    return of(false)
                } else {
                    return this.store.pipe(select(this.secondSelector.hasValue()))
                }
            })
        )
凌恩
2023-03-14

你快到了。您应该使用更高阶的映射操作符,如switchMap来返回一个可观察值<代码>映射用于转换和返回来自可观察对象的数据

const condition$: Observable<boolean> = this.store.pipe(
  select(this.firstSelector.get()),
  switchMap(item =>
    (item !== X)
      ? of(false)
      : this.store.pipe(select(this.secondSelector.hasValue()));
  )
)
 类似资料:
  • 有人能向我解释一下为什么运算符可以接受返回或的函数吗? 官方文件说: FlatMap运算符通过将您指定的函数应用于源可观察对象发出的每个项目来转换可观察对象,其中该函数返回本身发出项目的可观察对象。 为什么它也可以返回数组? 例如,它们都是有效的: 但这不起作用:

  • 导览 本小节主要介绍 Apache ShardingSphere 可观察性的相关功能 应用性能监控集成

  • 问题内容: 我一直在阅读Observer模式,以保持UI处于最新状态,但仍然看不到它的用途。即使在我的特定对象中通知了我的MainActivity然后运行update();方法我仍然无法使用Pet对象来获取更新值,因为该对象是在Oncreate中创建的…而我只是无法创建新对象,因为那时变量会有所不同..这是我的实施,它似乎不起作用。 观察者/ MainActivity 可观察/宠物 问题答案: 首

  • 我试图将一个角度函数转换为可观察模式,因为它的当前实现与它有一些异步性。为了讨论这个问题,我们举一个简单的例子。 可以通过以下方式将其转换为使用可观察对象: 我所面临的问题(据我所知)是针对无法访问内部选择语句的情况。 如果使用常规主题,订阅函数肯定不会得到任何值,因为事件的顺序是: 函数被调用 主题已创建 值已设置 调用函数订阅,因此仅在此事件发生后获取值 如果使用了BehaviorSubjec

  • 我正在学习RxJS,对于“听众”在哪里(在可观察的或观察者中),他们是如何订阅/取消订阅的,以及当观察者“不再对”可观察的“不感兴趣”时会发生什么,比如当你使用或。 对于第一部分——什么是订阅什么,什么是倾听者——我对这些陈述之间看似矛盾的地方感到困惑。从http://reactivex.io/rxjs/manual/overview.html我们读到观察者不是观察者的“听众” 这与addEven

  • 是否有一种设计模式可以形成一个“复合”观察者/可观察者? 我的意思是我有一个可观察的,它在某个变化时通知它的监听器。 每个监听器也是一个可观察的,并通知它自己的监听器(在某个动作上,它做了哪个动作是由第一个可观察的通知触发的)。 这种观察者/可观察的“链接”作为设计是可以的,还是有一个标准的模式?