我使用RXJS,我期待能够动态过滤数据,但我有问题:动态过滤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
你能做一个你想实现的大理石图吗?该大理石图将具有两个输入流和一个输出流。正如所写的,代码是非常笨拙的流说话方式(嵌套订阅是一种不好的做法),并且很难理解你想要做什么 – user3743222
@alex是啊,这对我来说似乎也是错误的!但我不确定我如何重新启动输出。 – DanDan