【发布时间】:2016-11-10 17:15:54
【问题描述】:
我正在使用 RXJS,我正在寻找动态过滤数据,但我遇到了问题:
let numberSource: ReplaySubject<Number> = new ReplaySubject<Number>();
let numberFilter: BehaviorSubject<Number> = new BehaviorSubject<Number>(5);
let filteredData = numberSource.filter(n => n < numberFilter.value);
numberFilter.subscribe(newFilter => {
filteredData = numberSource.filter(n => n < newFilter);
filteredData.subscribe(console.log); // <- I think this is wrong
});
console.log("A");
filteredData.subscribe(console.log);
numberSource.next(1);
numberSource.next(10);
numberSource.next(100);
console.log("B");
numberFilter.next(50);
我正在做的是订阅 numberSource,这是我有兴趣显示的数据。我还订阅了 numberFilter,因为我希望对其进行任何更改以重播主题,但我认为我做错了。
我期待看到:
A
1
B
1
10
我看到了:
A
1
1
B
1
10
谁能帮忙?
【问题讨论】:
-
首先,我很确定您不应该在每次
numberFilter的订阅者运行时订阅console.log到filterData。 -
你能画出你想要达到的目标吗?该大理石图将有两个输入流和一个输出流。正如所写的那样,代码在流式方面非常笨拙(嵌套订阅是一种不好的做法),而且很难理解你想要做什么
-
@alex 是的,这对我来说似乎也错了!但是,我不确定如何重新启动输出。
标签: typescript rxjs rxjs5