Bạn nói đúng, tài liệu thiếu những phương pháp đó. Tuy nhiên, khi tôi đào vào kho lưu trữ rxjs, tôi đã tìm thấy những nhận xét hay về vòi (quá dài để dán vào đây) và toán tử ống :
/**
* 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))
*/
Tóm lại:
Pipe : Dùng để ghép các toán tử chức năng lại với nhau thành một chuỗi. Trước khi chúng ta có thể thực hiện observable.filter().map().scan()
, nhưng vì mọi toán tử RxJS là một hàm độc lập chứ không phải là phương thức của Observable, chúng ta cần pipe()
tạo một chuỗi các toán tử đó (xem ví dụ ở trên).
Nhấn : Có thể thực hiện các tác dụng phụ với dữ liệu quan sát được nhưng không sửa đổi luồng theo bất kỳ cách nào. Trước đây được gọi là do()
. Bạn có thể nghĩ về nó như thể có thể quan sát được là một mảng theo thời gian, sau đó tap()
sẽ tương đương với Array.forEach()
.