【发布时间】:2020-02-18 07:10:53
【问题描述】:
该文档使用以下代码描述了 tap():
import { fromEvent } from 'rxjs';
import { tap, map } from 'rxjs/operators';
const clicks = fromEvent(document, 'click');
const positions = clicks.pipe(
tap(ev => console.log(ev)),
map(ev => ev.clientX),
);
positions.subscribe(x => console.log(x));
但我不明白为什么要使用水龙头。难道只是记录。解释说
将每次点击映射到该点击的 clientX 位置,同时也 记录点击事件
【问题讨论】:
-
tap()是一个只执行副作用的运算符。当然,您可以将console.log()放入map(),但通常不鼓励这样做。 -
如果您使用
console.log()而不是ev.clientX-x将是undefined,例如日志记录将返回undefined。map- 数据转换,tap- 副作用(不会对您的数据产生任何影响)。