Czym są metody rur i gwintowników w samouczku Angular? [Zamknięte]

130

Postępuję zgodnie z samouczkiem na https://angular.io i mam problem ze znalezieniem dokumentacji; specjalnie dla metod pipei tap. Nie mogę znaleźć niczego na https://angular.io lub http://reactivex.io/rxjs/ .

Rozumiem, że pipei tapczy obie metody Observableimportu z RxJS są prawidłowe? Co oni mają zrobić?

Czy te metody są częścią Angulara? Co robią te dwie metody?

Ben Rubin
źródło
58
Dziwnie mi się wydaje, gdy użytkownicy zadają właściwe pytania, otrzymują właściwą odpowiedź, a jednak dla modów nie mają pojęcia, o co pyta OP: D - dlaczego do cholery jest to „nie na temat”?
Paul Strupeikis

Odpowiedzi:

109

Masz rację, w dokumentacji brakuje tych metod. Jednak kiedy wbił rxjs repozytorium znalazłem miłe komentarze dotyczące kranu (zbyt długo, aby wkleić tutaj) i rur operatorów:

  /**
   * 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))
   */

W skrócie:

Rura : Służy do łączenia funkcjonalnych operatorów w łańcuch. Wcześniej moglibyśmy to zrobić observable.filter().map().scan(), ale ponieważ każdy operator RxJS jest samodzielną funkcją, a nie metodą Observable, musimy pipe()utworzyć łańcuch tych operatorów (patrz przykład powyżej).

Stuknij : może wywołać efekty uboczne na obserwowanych danych, ale w żaden sposób nie modyfikuje strumienia. Dawniej nazywany do(). Możesz myśleć o tym tak, jakby obserwowalna była tablica w czasie, a następnie tap()byłaby odpowiednikiem Array.forEach().

Daniel Kucal
źródło
4
Dziękuję za odpowiedź i linki. Częścią mojego problemu jest to, że jestem nowy w Angular i nie jestem pewien, które metody są częścią podstawowego kodu JavaScript lub Node.js, RxJS lub Angular. Twoja odpowiedź pomogła mi to wyjaśnić. Dziękuję Ci.
Ben Rubin,
3
@BenRubin Zalecałbym rozpoczęcie od właściwej nauki natywnego JS, zanim zaczniesz uczyć się narzędzi. Znacznie ułatwi to zrozumienie narzędzi i tego, co faktycznie robi (oraz dowiedzieć się, które części są natywne, a jakie narzędzie).
Magnus Eriksson
21
od 5.5 i wprowadzenie operatorów potokowych (kiedyś znanych jako lettable), doktórych nazwa została zmieniona na tap... Krótko mówiąc, to bałagan. github.com/ReactiveX/rxjs/blob/master/doc/pipeable-operators.md
Luca
3
filterdziała podobnie Array.filter- zachowuje tylko wartości spełniające regułę (w tym przypadku podzielne przez 2); map(znowu jak Array.map) zmienia każdą wartość (w tym przypadku dodaje ją do siebie); scanjest najciekawsze i oto fajne wyjaśnienie: learnrxjs.io/operators/transformation/scan.html
Daniel Kucal
1
wygląda na to, że skanowanie zostało zmniejszone
latj