Я провел эксперимент RxJava2, состоящий из следующих шагов:
- Создайте Observable из ListA объектов.
- Используйте flatMapSingle (). для сопоставления каждого элемента, испускаемого Observable, с SingleSource. Внутри flatMapSingle () асинхронная операция выполняется для каждого элемента, испускаемого Observable.
- Собраны все элементы в ListB с помощью Observable.toList ()
Результат: элементы ListB расположены в другом порядке, чем ListA, из-за асинхронной операции.
Итак, похоже, что flatMapSingle () работает как flatMap () в том смысле, что он использует оператор слияния и не гарантирует, что порядок элементов будет сохранен.
Мой вывод верен? Документация не касалась меня, и обсуждения этого поведения не ведутся.
flatMap
не гарантирует упорядочение выходных событий по отношению к входному значению, которое было отображено в источники. - person akarnokd   schedule 08.11.2017flatMap
, и это так, как вы сказали. Я просто хотел подтвердить, что то же самое относится и кflatMapSingle
(да, в имени есть flatMap, но лучше перестраховаться, чем сожалеть ...) - person Ευάγγελος Μπίλης   schedule 08.11.2017