Phương thức ống và vòi trong hướng dẫn Angular là gì? [đóng cửa]


129

Tôi đang làm theo hướng dẫn tại https://angular.io và gặp sự cố khi tìm tài liệu; cụ thể cho các phương pháp pipetap. Tôi không thể tìm thấy bất kỳ thứ gì trên https://angular.io hoặc http://reactivex.io/rxjs/ .

Sự hiểu biết của tôi là đó pipetaplà cả hai phương pháp Observable, được nhập từ RxJS, đúng không? Họ phải làm gì?

Các phương thức này có phải là một phần của Angular không? Hai phương pháp này làm gì?


56
Tôi thấy lạ khi người dùng đặt câu hỏi thích hợp, nhận được câu trả lời thích hợp, vậy mà đối với các mod lại không biết OP đang hỏi gì: D - tại sao cái quái gì lại "lạc đề" thế này?
Paul Strupeikis

Câu trả lời:


109

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().


4
Cảm ơn bạn đã trả lời và các liên kết. Một phần vấn đề của tôi là tôi mới sử dụng Angular và tôi không chắc phương thức nào là một phần của JavaScript hoặc Node.js cốt lõi hoặc RxJS hoặc Angular. Câu trả lời của bạn đã giúp tôi làm rõ điều đó. Cảm ơn bạn.
Ben Rubin

3
@BenRubin Tôi khuyên bạn nên bắt đầu bằng cách học JS gốc đúng cách trước khi bắt đầu tìm hiểu các công cụ. Nó sẽ giúp bạn hiểu các công cụ và những gì nó thực sự hoạt động dễ dàng hơn nhiều (và biết phần nào là bản địa so với công cụ).
Magnus Eriksson

21
kể từ 5.5 và sự ra đời của các toán tử có thể pip (từng được gọi là lettable), dođược đổi tên thành tap... Tóm lại, đó là một mớ hỗn độn. github.com/ReactiveX/rxjs/blob/master/doc/pipable-operators.md
Luca

3
filterhoạt động giống như Array.filter- chỉ giữ các giá trị đáp ứng quy tắc (trong trường hợp này là chia hết cho 2); map(một lần nữa như Array.map) thay đổi mọi giá trị (trong trường hợp này thêm nó vào chính nó); scanlà thú vị nhất và đây là một lời giải thích tốt đẹp: learnrxjs.io/operators/transformation/scan.html
Daniel Kucal

1
có vẻ như quá trình quét đang giảm
latj
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.