Rxjs 不发出任何值的可观察的
我有一个从web api调用返回的对象数组的可观察对象 我通过在其上运行一些可管道操作符(如过滤器)来创建另一个可观察对象。我知道该条件将不会满足数组中的任何当前项,但是我仍然希望收到一个默认值,因为生成的可观测值将用于对Rxjs 不发出任何值的可观察的,rxjs,nativescript,ngrx,Rxjs,Nativescript,Ngrx,我有一个从web api调用返回的对象数组的可观察对象 我通过在其上运行一些可管道操作符(如过滤器)来创建另一个可观察对象。我知道该条件将不会满足数组中的任何当前项,但是我仍然希望收到一个默认值,因为生成的可观测值将用于对combineLatest的调用,并且除非至少发出一个值,否则combineLatest将不起作用 无论我做什么,如果原始数组中的任何项都不满足过滤器要求,我都无法让这个可观察对象发出值。下面是我采取的一些方法 this.firstItem$ = this.items$
combineLatest
的调用,并且除非至少发出一个值,否则combineLatest
将不起作用
无论我做什么,如果原始数组中的任何项都不满足过滤器要求,我都无法让这个可观察对象发出值。下面是我采取的一些方法
this.firstItem$ = this.items$
.pipe(map(xArray => xArray.filter(x => x.prop === true)),
flatMap(x => x),
defaultIfEmpty(null as Item));
当我订阅this.firstItem$
时,不会发出任何消息
我甚至尝试将一个空的/空的项目添加到this.firstItem$
,但仍然没有任何东西发出
this.firstItem$ = this.items$
.pipe(
flatMap(x => x),
filter(item => item.prop === true),
concat(of(null as Item)));
必须在defaultIfEmpty或concat发出其值之前完成可观测源
要完成可观察的源代码,您可以使用管道操作符,如:take、takeUntil(在defaultIfEmpty/concat之前)如果没有从过滤器返回任何项目,则将开始工作?否。但如果符合您的用例,您可以在过滤器之前管道化它