我正在尝试使用以下代码将多个可观察对象合并为一个:
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>
,除了obs4
is Observable<List<MyItem>>
,所以我想在结果列表中用.flatMap { Observable.fromIterable(it) }
. 这里的问题是如果obs4
发出一个空列表,那么结果链永远不会发出,因为combineLatest
等待所有源发出第一个项目。是否有任何运算符会在每个源的每次更改时发出忽略空源的信息?