RxJS过滤多个流
RxJS filtering over multiple streams
实际上我在这个问题上卡住了。
我有一个使用Angularfire2的事件流。
this.events$ = this.af.database.list('/events')
.map(events => {
const filtered = events.filter(event => event.title === "Title 1");
return filtered;
});
获取如下数据:
{
title: "Title 1",
userid: "1"
}
然后我有一个用户的第二个流,像这样:
this.users$ = this.af.database.list('/users/1')
.map(users => {
const filtered = users.filter(user => user.name === "Name 1");
return filtered;
});
现在我想组合这些流来得到以下结果:
返回event.title === "Title 1"
和user.name === "Name 1"
这怎么可能?
提前感谢!
如果你想合并两个observable使用merge()
:
查看实时演示:http://plnkr.co/edit/7j71Qzok7CoFVt49QBs4
import {Observable, Subject} from 'rxjs';
let stream1 = new Subject();
let stream2 = new Subject();
Observable.merge(stream1, stream2)
.subscribe(r => {
console.log(r);
});
stream1.next(43);
stream2.next(42);
stream1.next(41);
打印到控制台:
43
42
41
如果你想在所有可观察对象完成后发出一个单独的值,使用forkJoin()
:
import {Observable, Subject} from 'rxjs';
let stream1 = new Subject();
let stream2 = new Subject();
Observable.forkJoin(stream1, stream2)
.subscribe(r => {
console.log(r);
});
stream1.next(43);
stream2.next(42);
stream1.next(41);
stream1.complete();
stream2.complete();
打印到控制台:
[41, 42]
这个答案已经过时了!遗憾的是,我不能删除它
像这样的东西对我很有用:
this.events$ = this.af.database.list('/events')
.map(events => {
events.map(event => {
this.af.database.object('users/' + event.userid)
.subscribe(user => {
event.user = user;
})
})
const filtered = events.filter(event => event.title === "Test 1")
.filter(event => event.user.name === "Name 1");;
return filtered;
});
我订阅了我的事件可观察对象中的用户。之后,我将用户保存为事件的一个属性。
工作对我来说很好!
注意:如果你想实时更新你的用户,把可观察对象保存到属性中,而不是user对象中。<然后在稍后的视图中订阅它。>
相关文章:
- 有可能过滤来自嵌入式YouTube的声音吗
- 为什么我的d3.jsselectAll+过滤器没有过滤
- ui网格日期单元格过滤器,过滤日期格式导致显示错误的日期
- Angular:使用选择列表选择过滤代码中的对象
- 在单击时过滤 JSON
- 如何在BookshelfJS中通过加入来过滤结果
- 您的平台不支持RxJS-Array.observe
- 如何使用(this)访问Angular 2 http rxjs catch函数中的对象属性
- 如何使用javascript过滤复杂的json对象
- 在rxjs中巧妙的蒸汽可观察合并
- http/rxjs catch回调中的Angular 2重定向导致TypeError:无法读取属性'订阅'
- RxJS等待承诺解决
- 如何应用带过滤器的ng if来过滤记录,并在同一页面中显示两个不同的视图
- 过滤AngularJs中的数据
- 通过API调用过滤数据
- 使用angularjs内置过滤器过滤代码中的特定属性
- 如何在RxJS 5中创建Hot Observable
- 用RxJS过滤对象的对象
- RxJS过滤多个流
- 如何使用 rxjs 过滤键中断