rxjs 操作符 pairwise 的一个例子
2022-01-24 本文已影响0人
_扫地僧_
Groups pairs of consecutive emissions together and emits them as an array of two values.
pairwise 将连续的发射出的值进行分组并配对,然后以数组的数据结构进行发射。
pairwise 返回的数据类型如下:返回一个新的 OperatorFunction,这是一个函数,该函数返回一个新的 Observable,以数组的结构包裹了源 Observable 发射的值。
OperatorFunction<T, [T, T]>: A function that returns an Observable of pairs (as arrays) of consecutive values from the source Observable.
pairwise 的弹珠图:
下列这段代码,计算每次屏幕点击和前一次点击的绝对距离:
import { fromEvent } from 'rxjs';
import { pairwise, map } from 'rxjs/operators';
const clicks = fromEvent(document, 'click');
const pairs = clicks.pipe(pairwise());
const distance = pairs.pipe(
map((pair) => {
const x0 = pair[0].clientX;
const y0 = pair[0].clientY;
const x1 = pair[1].clientX;
const y1 = pair[1].clientY;
return Math.sqrt(Math.pow(x0 - x1, 2) + Math.pow(y0 - y1, 2));
})
);
distance.subscribe((x) => console.log(x));