В чем разница между Tap и операторами изменения Observable

«В чем разница между Tap и операторами изменения Observable» — вопрос из категории Библиотеки, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Разница между tap и операторами изменения (например, map, filter) в RxJS:

  1. tap - side-effect оператор, не изменяет поток данных. Используется для выполнения действий (логирование, вызовы функций) без модификации значений.
  2. Операторы изменения (map, filter и др.) трансформируют поток, возвращая новый Observable с измененными данными.

Пример:

source$.pipe(
  tap(val => console.log('Original:', val)), // side-effect
  map(val => val * 2), // преобразование
  tap(val => console.log('Mapped:', val)) // side-effect
).subscribe();

tap полезен для отладки или промежуточных действий, но не влияет на данные в потоке. Операторы изменения всегда возвращают модифицированные значения.