我做了一个RxJava2实验,包括以下步骤:
结果:数组listB有其不同的顺序项目利斯塔由于异步操作.
因此,似乎flatMapSingle()的工作方式类似于flatMap(),因为它使用了合并运算符,并不保证元素的顺序将被保留.
我的结论是否正确?文档没有涵盖我,并且不存在关于此行为的讨论.
flatMap 并不保证在评论中提及的@akarnokd订购.
如果你想保证订购,你可以使用,concatMap但它允许你只与内部连接Observable.似乎concatMapSingleRxJava1和RxJava2都没有版本.你,但是,可以通过转换内部变通办法,Single以Observable利用toObservable()自己与使用concatMap这样的(写在科特林代码).
Observable
.fromIterable(listA)
.concatMap { single.toObservable() }
.toList() // Items in the list has same order of listA
Run Code Online (Sandbox Code Playgroud)
请注意,concatMapEager还会热切地订阅内部Observable(或Single上面的示例),这可能有助于改进并行化任务.