BACK
ReferenceswitchMap
Reference · 21

switchMap

switchMap

rxjs.dev

Переключается на новый внутренний поток, отменяя предыдущий.

Сигнатура

switchMap(project: (value: T, index: number) => ObservableInput): OperatorFunction

Маркеры

outer:    --a---b---c---|
inner(a): xxxxx (cancelled)
inner(b): xxxxx (cancelled)
result:   --------------c-c-c-|

Что делает

На каждое значение из outer запускает project(value) — внутренний Observable. Подписывается на него, а от предыдущего внутреннего отписывается. Внешние эмиты потока — это эмиты только текущего внутреннего.

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

Typeahead-поиск (последний запрос важнее, прошлые отменяются), переход на новую страницу (отменяем старый запрос), реакция на смену параметра.

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

Опасно для критичных submit-операций — внутренний запрос может быть отменён посередине. Для submit используйте exhaustMap или concatMap.

См. также

mergeMap, concatMap, exhaustMap

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