对api.bookings的调用将以预定义的顺序返回预订列表。调用api.order()会返回一个预订,但有一些额外的信息。应用flatMap()后,预订列表的顺序困惑了。 (bookings.toList()只是Bookings的列表)。如何按.from(bookings.toList())发出的顺序获取zip函数中的值。注意:我无法使用toSortedList,因为我无法比较两个预订。
bookingsSubscription = api.bookings()
.flatMap(bookings ->
Observable.zip(
Observable
.from(bookings.toList())
.flatMap(booking -> api.order(booking.orderId)),
Observable.from(bookings.toList()),
(newBooking, oldBooking) -> {
// at this point newBooking != oldBooking
}
).toList())
.subscribe(callback);
api顺序
最佳答案
concatMap
可以使用,但不会提供所需的并发性。另一方面,concatMapEager
将。
等效的选项是手动创建List<Observable>
并使用Observable.zip(Iterable, FuncN)
组合列表。这将与concatMapEager
具有相同的效果。
参见RxJava issue 3017进行讨论。