Добро пожаловать обратно! В этой статье я проиллюстрирую другую стратегию конкатенации, используемую замечательной библиотекой RxJS.

Прежде всего, если вы не читали мои предыдущие статьи, я предлагаю сделать это сейчас:

В этой статье я познакомлю вас с оператором switchMap , который в основном позволяет разработчику объединять различные события таким образом, что если событие в цепочке событий не завершено, оно стирается при появлении нового события. излучаемый.

Давайте посмотрим на мраморную диаграмму switchMap:

Чтобы представить это на живом примере, предположим, что когда пользователь набирает букву (в нашем случае "A", "B", "C"), операторы switchMap комбинируют ее с 1,2 и 3, и выдает эти значения с интервалом в 1 секунду.

Теперь предположим, что пользователь вводит «A», switchMap регистрирует три новых значения «A1», «A2» и «A3» и немедленно выдает «A1», затем ждет секунду, прежде чем выдать «A2». Тем временем, через (примерно) 0,8 секунды пользователь вводит «B». Оператор switchMap отменяетвсе запланированные события «A2» и «A3» и заменяет их новой серией «B1» (которая генерируется немедленно), «B2 " и "В3".

Этот оператор особенно полезен, когда у нас есть форма, которая выполняет сохранение при каждом изменении значения. Чтобы избежать десятков вызовов HTTP-запросов, мы, вероятно, захотим использовать switchMap.

Надеюсь, механизм немного понятнее :)