Skip to main content
Module

x/rxjs/mod.ts>pairwise

Deno port of RXJS
Latest
function pairwise
import { pairwise } from "https://deno.land/x/rxjs@v1.0.2/mod.ts";

Groups pairs of consecutive emissions together and emits them as an array of two values.

Puts the current value and previous value together as an array, and emits that.

The Nth emission from the source Observable will cause the output Observable to emit an array [(N-1)th, Nth] of the previous and the current value, as a pair. For this reason, pairwise emits on the second and subsequent emissions from the source Observable, but not on the first emission, because there is no previous value in that case.

Example

On every click (starting from the second), emit the relative distance to the previous click

import { fromEvent, pairwise, map } from 'rxjs';

const clicks = fromEvent<PointerEvent>(document, 'click');
const pairs = clicks.pipe(pairwise());
const distance = pairs.pipe(
  map(([first, second]) => {
    const x0 = first.clientX;
    const y0 = first.clientY;
    const x1 = second.clientX;
    const y1 = second.clientY;
    return Math.sqrt(Math.pow(x0 - x1, 2) + Math.pow(y0 - y1, 2));
  })
);

distance.subscribe(x => console.log(x));

Returns

A function that returns an Observable of pairs (as arrays) of consecutive values from the source Observable.