- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下两个订阅:
this.service1.source1.subscribe(countries => {
this.filteredData = [];
countries.forEach(country => {
this.filteredData = this.data.filter(user => {
return user.country == country;
});
});
});
this.service2.source2.subscribe(companies => {
companies.forEach(company => {
this.filteredData = [];
this.filteredData = this.data.filter(user => {
return user.company == company;
});
});
});
其中 source1 和 source2 是 BehaviorSubject
并且这两个事件都被 subscribe
捕获。
我想合并两个订阅,因为我想根据 subscribe
我尝试了 forkJoin
和 zip
zip([this.service1.source1, this.service1.source2]).subscribe(results => {
console.log('zip results:', results);
});
forkJoin([this.service1.source1, this.service1.source2]).subscribe(results => {
console.log('forkJoin results:', results);
});
但是对于那些(zip 和 forkJoin),我注意到我什至没有在控制台上得到任何东西,就好像 subscribe
在发出事件时没有被执行一样。
如何将两个来源的结果合并到一个订阅中?
最佳答案
forkJoin
可能不适合您的用例,因为它在所有可观察对象完成时从每个对象发出最后发出的值。
zip
也可能不会给你想要的行为,因为 它等待所有输入流都发出它们的第 n 个值,一旦满足这个条件,它就会结合所有这些第 n 个值并发出第 n 个组合值。
因此,在任何一种情况下,您都不会得到发射,直到两个可观察量都有发射。因为this.service1.source1
和this.service1.source2
是BehaviorSubject使用 zip
保证初始发射。但只有当两个 observable 都发出时才会发生后来的发射。
我建议使用 combineLatest因为每当任何输入流发出一个值时,它都会结合每个输入流发出的最新值。
combineLatest(this.service1.source1, this.service1.source2).subscribe(results => {
console.log('combineLatest results:', results);
});
并且由于this.service1.source1
和this.service1.source2
是BehaviorSubject这样:
A variant of Subject that requires an initial value and emits its current value whenever it is subscribed to.
保证您在订阅它时以及任何可观察对象发出值时都会获得发射。
关于angular - 如何将 Subjects 和 Observables 与 Angular rxjs 结合起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56669897/
我正在尝试执行 vagrant up 但一直遇到此错误: ==> default: IOError: [Errno 13] Permission denied: '/usr/local/lib/pyt
我在容器 div 中有一系列动态创建的不同高度的 div。 Varying text... Varying text... Varying text... Varying text.
通过 cygwin 运行 vagrant up 时遇到以下错误。 stderr: /bin/bash: /home/vagrant/.ansible/tmp/ansible-tmp-14872260
今天要向小伙伴们介绍的是一个能够快速地把数据制作成可视化、交互页面的 Python 框架:Streamlit,分分钟让你的数据动起来! 犹记得我在做机器学习和数据分析方面的毕设时,
我是 vagrant 的新手,正在尝试将第二个磁盘添加到我正在用 vagrant 制作的虚拟机中。 我想出了如何在第一次启动虚拟机时连接磁盘,但是当我关闭机器时 然后再次备份(使用 'vagrant
我是一名优秀的程序员,十分优秀!