提问者:小点点

可观察不发射任何值


我有一个从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)));

共1个答案

匿名用户

源可观察性必须在defaultIf为空或concat发出它们的值之前完成。

要完成源可观察性,您可以使用管道运算符,例如:取、取直到(在defaultIf为空/concat之前)

相关问题