flatMap() разделяет rx-стрим на несколько промежуточных стримов, назовем их
[A, B, C], и затем соединяет результат в один стрим. Элементы промежуточных стримов передаются напрямую в конечный стрим без гарантии сохранения порядка, в котором созданы
A,
B и
C. Конечный результат может быть таким:
[C1, A1, A2, B1, C2, A3, B2, B3, C3].
concatMap() работает похожим на
flatMap() образом, но сохраняет порядок промежуточных стримов. Результат будет:
[A1, A2, A3, B1, B2, B3, C1, C2, C3].
switchMap() похож на
flatMap() и также как
concatMap() сохраняет порядок. Но при использовании
switchMap() каждый предыдущий промежуточный стрим останавливается в тот момент, когда стартует следующий. Результат может выглядеть так:
[A1, A2, B1 C1, C2, C3].
Подробнее