angular - 如何跳过空数组观察者?
问题描述
我使用combineLatest
运算符:
combineLatest(...this.filtersList.map((f) => f.filtersChanges)).subscribe((data) => {
console.log(data);
});
它获取每个流中最新发出的更改:f.filtersChanges
并返回值数组:[value1, value2]
。
我的问题是,如果返回的空值数组没有变化:[null, null]
。
如何在justnull
或boolean上替换它?
我试过过滤器:
combineLatest(...this.filtersList.filter((filter) => filter.filtersChanges.getValue()).map((f) => f.filtersChanges)).subscribe(
(data) => {
console.log(data);
},
);
但它永远不会起作用,如果删除filter()
它会起作用ю
这是有效的,但不能跳过[null, null]
:
combineLatest(this.filtersList.map((f) => f.filtersChanges)).subscribe((data) => {
});
解决方案
利用
combineLatest(...this.filtersList.map((f) => f.filtersChanges))
.pipe(skipWhile(result => result.every(val => val == null)))
.subscribe((data) => {
console.log(data);
});
如果订阅中的某些值为空,则跳过任何结果的发射。或者,result.some
如果您不需要null
其他数据的任何值,则可以使用。
如果您false
在数据为空时需要结果,则使用此变体。
combineLatest(...this.filtersList.map((f) => f.filtersChanges))
.pipe(map(result => result.every(val => val == null) ? false : result))
.subscribe((data) => {
console.log(data);
});
推荐阅读
- java - 在android studio中看不到图像视图
- python - 将 python 实用程序函数导入 jupyter notebook
- java - 从 Java 中的 REST 请求字节数组
- php - 如何让下拉菜单返回文本值而不是索引值
- c# - 基于 C# 应用程序中的用户输入创建 SQL 数据库的安全方法
- amazon-web-services - 我应该在 AWS 和 Heroku 中为我的客户创建新账户吗?
- bash - 简单的 bash 进程替换不适用于 kdiff3 和 hexdump
- focus - 如何将焦点设置在元素上
- angular - 仅从一个已知子集合中检索所有文档
- python-3.x - Numpy 数组到 TFrecord