Ви праві, документації цих методів не вистачає. Однак, коли я заглибився у сховище rxjs, я знайшов приємні коментарі щодо tap (занадто довго, щоб вставити тут) та операторів труб :
/**
* Used to stitch together functional operators into a chain.
* @method pipe
* @return {Observable} the Observable result of all of the operators having
* been called in the order they were passed in.
*
* @example
*
* import { map, filter, scan } from 'rxjs/operators';
*
* Rx.Observable.interval(1000)
* .pipe(
* filter(x => x % 2 === 0),
* map(x => x + x),
* scan((acc, x) => acc + x)
* )
* .subscribe(x => console.log(x))
*/
Коротко:
Труба : використовується для зшивання функціональних операторів у ланцюг. Перш ніж ми могли це зробити observable.filter().map().scan()
, але оскільки кожен оператор RxJS є окремою функцією, а не методом спостережуваного, нам потрібно pipe()
створити ланцюжок цих операторів (див. Приклад вище).
Торкніться : може виконувати побічні ефекти зі спостережуваними даними, але жодним чином не змінювати потік. Раніше дзвонили do()
. Ви можете думати про це так, ніби спостерігається масив у часі, то tap()
це було б рівнозначно Array.forEach()
.