我有一个从Web api调用返回的对象数组的可观察对象。
我正在通过在其上运行一些可管道运算符(例如filter)来创建另一个可观察对象。我知道该条件不会满足数组中的任何当前项目,但是我仍然希望收到一个默认值,因为生成的可观察对象旨在用于进一步调用组合最新
,并且组合最新
将不起作用,除非至少发出一个值。
无论我做什么,如果原始数组中的任何项都不满足过滤要求,我都无法让这个可观察对象发出一个值。请参阅下面我采取的一些方法
this.firstItem$ = this.items$
.pipe(map(xArray => xArray.filter(x => x.prop === true)),
flatMap(x => x),
defaultIfEmpty(null as Item));
当我订阅this. firstItem$
时,不会发出任何东西
我什至尝试将
一个空/null项目连接到this. firstItem$
,但仍然没有发出任何信息
this.firstItem$ = this.items$
.pipe(
flatMap(x => x),
filter(item => item.prop === true),
concat(of(null as Item)));
源可观察性必须在defaultIf为空或concat发出它们的值之前完成。
要完成源可观察性,您可以使用管道运算符,例如:取、取直到(在defaultIf为空/concat之前)