【发布时间】:2018-02-10 11:09:37
【问题描述】:
有两个Observables:foo 和bar。
foo 将返回 array 对象,例如 [{ id: 1 }, { id: 2 }, ...](它将返回整个数组(在此处使用 AngularFire .list))
bar 对从foo 返回的每个项目都有一个存储值。该值存储为一个对象,如下所示:{ id: 2, status: false }。
这里需要做的是最初调用foo,在它的map函数中,我想从subscribe()方法中取出{ id: 2 },如果它在bar的响应中匹配值是false。
换种说法
- 观看来自
foo的流 -
.map对象并检查来自bar的每个对象 状态 -
bar返回一个值为true或false的 observable - .
filterfoo取出任何带有status的对象为false
我尝试了combineLatest、zip 和其他RxJS 方法,但不确定我是否正确执行此操作。有人可以告诉我正确的方法,或者至少指出我们应该探索哪些方法吗?
感谢您的帮助!
谢谢。
//
.... foo
....... itemId1
....... itemId2
.... bar
....... itemId1: true
....... itemId2: false
订阅foo时,它返回的数组必须是filtered才能返回itemId1,因为它的bar值是true(都是observables,foo和bar ofc)
【问题讨论】:
-
foo是逐个发出值还是一次发出整个数组?如果您展示了重新创建所需行为的尝试,那就太好了。我猜, zip 或 combineLatest 应该都可以工作。 -
Hi @BorisLobanov
foo发出整个数组。 -
bar也会发出布尔数组吗? -
其实很抱歉,
bar将根据来自foo的个人id发出一个Object。所以需要将它们映射在一起,对于foo中数组中的每个id,从bar中的相关对象中获取最新值。希望我没有让这件事复杂化 -
你能看看我做的 jsfiddle 看看它是否在做你需要的事情吗? jsfiddle.net/pp6zpx9u
标签: javascript firebase rxjs angularfire2 reactivex