В чем преимущество switchMap

Ответ

switchMap из RxJS отменяет предыдущий внутренний Observable при каждом новом внешнем значении, что полезно для предотвращения утечек памяти и гонки запросов.

Пример:

input$.pipe(
  switchMap(value => http.get(`/api/search?q=${value}`))
).subscribe(results => console.log(results));

Преимущества:

  1. Автоматическая отмена предыдущих запросов (актуально для поиска, автодополнения).
  2. Гарантирует обработку только последнего значения (избегаем race condition).
  3. Чистый код — не нужно вручную отписываться от подписок.

Недостаток:
Не подходит, если нужно сохранять все вложенные Observable (например, для параллельных запросов). В таких случаях лучше mergeMap.