tap
и map
являются операторами Rx JS, операторы Rx JS являются просто функцией, которая выполняет некоторые манипуляции с данными.
Они оба pipeable operators
, которые принимают входные данные в качестве наблюдаемых, выполняют некоторые действия и возвращают наблюдаемые выходные данные.
Разница между картой и касанием:
map
- это конвейерный оператор, который принимает наблюдаемую входную информацию, выполняет с ней некоторые манипуляции и возвращает новую наблюдаемую манипуляцию. Например,
const source$ = of(1,2,3) // observable which will emit 1,2,3
// It take an input observable and return a new observable which will emit square of input values.
// So, the output observable will emit 1,4,9
const mapSource$ = of(1,2,3)
.pipe(map(value => value * value))
Оператор tap
с другой стороны принимает наблюдаемую входную информацию, выполняет некоторое действие и возвращает ту же наблюдаемую входную информацию.
const source$ = of(1,2,3) // observable which will emit 1,2,3
// It take an input observable and return a same observable after console value.
// So, the output observable will emit 1,2,3
const tapSource$ = of(1,2,3)
.pipe(tap(value => console.log(value)))