Ответ
switchMap из RxJS отменяет предыдущий внутренний Observable при каждом новом внешнем значении, что полезно для предотвращения утечек памяти и гонки запросов.
Пример:
input$.pipe(
switchMap(value => http.get(`/api/search?q=${value}`))
).subscribe(results => console.log(results));Преимущества:
- Автоматическая отмена предыдущих запросов (актуально для поиска, автодополнения).
- Гарантирует обработку только последнего значения (избегаем race condition).
- Чистый код — не нужно вручную отписываться от подписок.
Недостаток:
Не подходит, если нужно сохранять все вложенные Observable (например, для параллельных запросов). В таких случаях лучше mergeMap.