RxJava: flatMap, switchMap и concatMap
#разработка
Это достаточно распространные операторы, и между ними есть существенная разница, о которой стоит помнить. В качестве примера для списка элементов "a", "b", "c", "d", "e", "f" применяется фукнция конкатенации x. Вот краткое объяснение:
• flatMap — применяет функцию к каждому элементу, соединяет элементы вместе и после чего возвращает Observable. Следует помнить, что элементы могут чередоваться, поэтому функция не заботится о порядке возвращения. В примере увидим cx, ex, fx, bx, dx, ax.
• switchMap — в отличии от flatMap, при получении нового элемента отписывается и перестает отображать предыдущие элементы, и наблюдает только за текущим. В примере увидим fx.
• concatMap — в отличии от flatMap, заботится о порядке элементов. При этом ему необходимо дождаться, пока каждый из элементов завершит свою работу перед получением нового. Поэтому, этот оператор нужно использовать осторожно. В примере увидим ax, bx, cx, dx, ex, fx.
Больше объяснений и примеров использования операторов тут.
#разработка
Это достаточно распространные операторы, и между ними есть существенная разница, о которой стоит помнить. В качестве примера для списка элементов "a", "b", "c", "d", "e", "f" применяется фукнция конкатенации x. Вот краткое объяснение:
• flatMap — применяет функцию к каждому элементу, соединяет элементы вместе и после чего возвращает Observable. Следует помнить, что элементы могут чередоваться, поэтому функция не заботится о порядке возвращения. В примере увидим cx, ex, fx, bx, dx, ax.
• switchMap — в отличии от flatMap, при получении нового элемента отписывается и перестает отображать предыдущие элементы, и наблюдает только за текущим. В примере увидим fx.
• concatMap — в отличии от flatMap, заботится о порядке элементов. При этом ему необходимо дождаться, пока каждый из элементов завершит свою работу перед получением нового. Поэтому, этот оператор нужно использовать осторожно. В примере увидим ax, bx, cx, dx, ex, fx.
Больше объяснений и примеров использования операторов тут.