1

我正在尝试使用以下代码将多个可观察对象合并为一个:

 val observables: Array<Observable<out MyItem>> = arrayOf(
    obs0,
    obs1
    obs2,
    obs3,
    obs4.flatMap { Observable.fromIterable(it) },
    obs5,
    obs6,
    obs7,
    obs8,
    obs9,
    obs10
)

Observable.combineLatestDelayError(observables) { items ->
    items.filterIsInstance<MyItem>()
        .filter { ... }
        .map { ... }
}

它们都有一个类型Observable<MyItem>,除了obs4is Observable<List<MyItem>>,所以我想在结果列表中用.flatMap { Observable.fromIterable(it) }. 这里的问题是如果obs4发出一个空列表,那么结果链永远不会发出,因为combineLatest等待所有源发出第一个项目。是否有任何运算符会在每个源的每次更改时发出忽略空源的信息?

4

0 回答 0