BACK
ReferencemergeMap
Reference · 22

mergeMap

Запускает внутренние потоки параллельно.

Сигнатура

mergeMap(project, concurrent?: number): OperatorFunction

Маркеры

outer:    --a---b---|
inner(a): --1-2-3|
inner(b):     --1-2-3|
result:   --1-2-1-3-2-3-|

Что делает

На каждое значение запускает новый внутренний Observable, ничего не отменяя. Все активные inner-стримы живут параллельно (по умолчанию без лимита). Параметр concurrent ограничивает число одновременных подписок — лишние ждут очереди.

Когда использовать

Параллельные HTTP-запросы (например, загрузка списка превью), обработка событий, для которых порядок и отмена не важны. mergeMap(fn, 3) — стандартный паттерн пула загрузок.

Подводный камень

Без concurrent на потоке кликов получите столько одновременных запросов, сколько кликов. Для critical-операций предпочтительнее exhaustMap.

См. также

switchMap, concatMap, forkJoin

script.ts // TypeScript
CONSOLE · Console Output
Нажмите на запуск, чтобы увидеть результат...