Anda benar, dokumentasi tidak memiliki metode tersebut. Namun ketika saya menggali ke dalam repositori rxjs, saya menemukan komentar bagus tentang tap (terlalu panjang untuk ditempel di sini) dan operator pipa :
/**
* 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))
*/
Secara singkat:
Pipa : Digunakan untuk menjahit operator fungsional menjadi sebuah rantai. Sebelumnya kita bisa melakukannya observable.filter().map().scan()
, tetapi karena setiap operator RxJS adalah fungsi mandiri daripada metode Observable, kita perlu pipe()
membuat rantai operator tersebut (lihat contoh di atas).
Ketuk : Dapat melakukan efek samping dengan data yang diamati tetapi tidak mengubah aliran dengan cara apa pun. Sebelumnya disebut do()
. Anda dapat menganggapnya seolah-olah observable adalah array dari waktu ke waktu, maka tap()
akan menjadi setara dengan Array.forEach()
.