RxJS - Operatory

Operatorzy są ważną częścią RxJS. Operator jest czystą funkcją, która przyjmuje obserwowalne jako dane wejściowe, a wyjście jest również obserwowalne.

Praca z operatorami

Operator jest czystą funkcją, która przyjmuje obserwowalne jako dane wejściowe, a wyjście jest również obserwowalne.

Do pracy z operatorami potrzebujemy metody pipe ().

Przykład użycia pipe ()

let obs = of(1,2,3); // an observable
obs.pipe(
   operator1(),
   operator2(),
   operator3(),
   operator3(),
)

W powyższym przykładzie stworzyliśmy obserwowalne użycie of()metoda, która przyjmuje wartości 1, 2 i 3. Teraz na tym obserwowalnym można wykonać inną operację przy użyciu dowolnej liczby operatorów przy użyciu metody pipe (), jak pokazano powyżej. Wykonywanie operatorów będzie się odbywać sekwencyjnie na danym obserwowalnym.

Poniżej znajduje się działający przykład -

import { of } from 'rxjs';
import { map, reduce, filter } from 'rxjs/operators';

let test1 = of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
let case1 = test1.pipe(
   filter(x => x % 2 === 0),
   reduce((acc, one) => acc + one, 0)
)
case1.subscribe(x => console.log(x));

Wynik

30

W powyższym przykładzie użyliśmy operatora filtru, który filtruje liczby parzyste, a następnie użyliśmy reduce() operator, który doda parzyste wartości i da wynik po zasubskrybowaniu.

Oto lista Observables, które zamierzamy omówić.

  • Creation
  • Mathematical
  • Join
  • Transformation
  • Filtering
  • Utility
  • Conditional
  • Multicasting
  • Obsługa błędów

Operatory tworzenia

Poniżej znajdują się operatory, które omówimy w kategorii Operator tworzenia -

Sr.No Operator i opis
1 Ajax

Ten operator wykona żądanie AJAX dla podanego adresu URL.

2 od

Ten operator utworzy obserwowalny z tablicy, obiekt podobny do tablicy, obietnicę, obiekt iterowalny lub obiekt podobny do obserwowalnego.

3 fromEvent

Ten operator da dane wyjściowe jako obserwowalne, które mają być użyte w elementach emitujących zdarzenie, na przykład przyciski, kliknięcia itp.

4 fromEventPattern

Ten operator utworzy obserwowalne z funkcji wejściowej, która jest używana do rejestrowania programów obsługi zdarzeń.

5 interwał

Ten operator utworzy Observable dla każdego czasu dla podanego czasu.

6 z

Ten operator weźmie przekazane argumenty i przekształci je w obserwowalne.

7 zasięg

Ten operator utworzy Observable, który da ci sekwencję liczb na podstawie podanego zakresu.

8 throwError

Ten operator utworzy obserwowalny, który powiadomi o błędzie.

9 regulator czasowy

Ten operator utworzy obserwowalny, który wyemituje wartość po upływie limitu czasu, a wartość będzie rosła po każdym wywołaniu.

10 iif

Ten operator zdecyduje, które Observable zostanie zasubskrybowane.

Operatory matematyczne

Poniżej przedstawiono operatory, które omówimy w kategorii Operator matematyczny -

Sr.No Operator i opis
1 Liczyć

Operator count () przyjmuje Observable z wartościami i konwertuje go na Observable, który da pojedynczą wartość

2 Maks

Metoda Max przyjmie obserwowalną ze wszystkimi wartościami i zwróci obserwowalną z wartością maksymalną

3 Min

Min metoda przyjmie obserwowalną ze wszystkimi wartościami i zwróci obserwowalną z wartością minimalną.

4 Zmniejszyć

W operatorze redukuj, funkcja akumulatora jest używana na wejściu obserwowalnym, a funkcja akumulatora zwróci skumulowaną wartość w postaci obserwowalnej, z opcjonalną wartością ziarna przekazaną do funkcji akumulatora.

Funkcja redukuj () przyjmie 2 argumenty, jedną funkcję akumulującą, a drugą wartość początkową.

Dołącz do operatorów

Poniżej przedstawiono operatory, które omówimy w kategorii Operator przyłączenia.

Sr.No Operator i opis
1 concat

Ten operator sekwencyjnie wyemituje Observable podane jako dane wejściowe i przejdzie do następnego.

2 forkJoin

Ten operator zostanie przyjęty w tablicy lub obiekcie dyktowania jako dane wejściowe i będzie czekał na zakończenie obserwacji i zwróci ostatnie wartości wyemitowane z danej obserwowalnej.

3 łączyć

Operator ten weźmie obserwowalne dane wejściowe i wyemituje wszystkie wartości z tego, co obserwowalne, i wyemituje jeden obserwowalny wynik.

4 wyścigi

Zwróci obserwowalne, które będzie lustrzaną kopią pierwszego obserwowalnego źródła.

Operatory transformacji

Poniżej przedstawiono operatory, które omówimy w kategorii Operator transformacji.

Sr.No Operator i opis
1 bufor

Bufor działa na obserwowalnym i przyjmuje argument jako obserwowalny. Zacznie buforować wartości emitowane w swojej pierwotnej obserwowalnej tablicy i wyemituje to samo, gdy wyemituje obserowalny wzięty jako argument. Po tym, jak obserwowalne zostaną wzięte jako wyemitowane argumenty, bufor jest resetowany i zaczyna ponownie buforować oryginał, aż pojawi się obserwowalne wejście i powtórzy się ten sam scenariusz.

2 bufferCount

W przypadku operatora buffercount () zbierze on wartości z obserwowalnego, na którym jest wywoływany i wyemituje to samo, gdy rozmiar bufora podany do buffercount będzie zgodny.

3 czas bufora

Jest to podobne do bufferCount, więc tutaj zbierze wartości z obserwowalnego, na którym jest wywoływana, i wyemituje bufferTimeSpan. Przyjmuje 1 argument, tj . BufferTimeSpan .

4 bufferToggle

W przypadku bufferToggle () przyjmuje 2 argumenty, otwarcia i selektor zamknięcia. Argumenty otwierające są subskrybowane lub obiecują uruchomienie bufora, a drugi argument CloseSelector jest ponownie subskrybowany lub obiecuje wskaźnik zamknięcia bufora i wyemitowania zebranych wartości.

5 buforWhen

Ten operator poda wartości w postaci tablicowej, przyjmuje jeden argument jako funkcję, która zdecyduje, kiedy zamknąć, wyemitować i zresetować bufor.

6 rozszerzać

Operator expand przyjmuje funkcję jako argument, który jest stosowany do obserwowalnego źródła rekurencyjnie, a także do obserwowalnego wyjścia. Ostateczna wartość jest obserwowalna.

7 Grupuj według

W operatorze groupBy dane wyjściowe są grupowane na podstawie określonego warunku, a te elementy grupowe są emitowane jako GroupedObservable.

8 mapa

W przypadku operatora mapy, funkcja projektu jest stosowana do każdej wartości w źródle Observable i ten sam wynik jest emitowany jako Observable.

9 Mapa do

Stała wartość jest podawana jako wyjście wraz z Observable za każdym razem, gdy źródło Observable emituje wartość.

10 mergeMap

W przypadku operatora mergeMap, funkcja projektu jest stosowana do każdej wartości źródłowej, a jej wynik jest łączony z danymi wyjściowymi Observable.

11 switchMap

W przypadku operatora switchMap, funkcja projektu jest stosowana do każdej wartości źródłowej, a jej wynik jest łączony z danymi wyjściowymi Observable, a podana wartość jest ostatnią przewidywaną Observable.

12 okno

Pobiera argumentowe granice okna, które są obserwowalne i zwracają zagnieżdżone obserwowalne za każdym razem, gdy dane granice okna emitują

Operatory filtrowania

Poniżej przedstawiono operatory, które omówimy w kategorii operatorów filtrujących.

Sr.No Operator i opis
1 Obalić

Wartość emitowana ze źródła Obserwowalna po pewnym czasie, a emisja jest określana przez inny sygnał wejściowy określony jako Obserwowalny lub obiecujący.

2 debounceTime

Wyemituje wartość z obserwowalnego źródła dopiero po upływie tego czasu.

3 odrębny

Ten operator poda wszystkie wartości z obserwowalnego źródła, które są różne w porównaniu z poprzednią wartością.

4 elementAt

Ten operator poda pojedynczą wartość z obserwowalnego źródła na podstawie podanego indeksu.

5 filtr

Ten operator odfiltruje wartości ze źródła Observable na podstawie podanej funkcji predykatu.

6 pierwszy

Ten operator poda pierwszą wartość wyemitowaną przez źródło Observable.

7 ostatni, ubiegły, zeszły

Ten operator poda ostatnią wartość wyemitowaną przez źródło Observable.

8 ignoreElements

Ten operator zignoruje wszystkie wartości ze źródła Observable i wykona tylko wywołania funkcji zakończenia lub błędu wywołania zwrotnego.

9 próba

Ten operator poda najnowszą wartość ze źródła Observable, a wynik będzie zależał od przekazanego argumentu.

10 pominąć

Ten operator zwróci obserwowalną, która pominie pierwsze wystąpienie elementów zliczania przyjętych jako dane wejściowe.

11 przepustnica

Ten operator wyświetli, jak również zignoruje wartości ze źródła obserwowalne przez czas określony przez funkcję wejściową, przyjętą jako argument, i ten sam proces zostanie powtórzony.

Operatorzy narzędzi

Poniżej przedstawiono operatory, które omówimy w kategorii operatorów usług użyteczności publicznej.

Sr.No Operator i opis
1 kran

Ten operator będzie miał dane wyjściowe, takie same jak obserwowalne źródło i może być używany do rejestrowania wartości dla użytkownika z obserwowalnego. Główna wartość, ewentualny błąd lub ukończenie zadania.

2 opóźnienie

Ten operator opóźnia wartości emitowane ze źródła Observable na podstawie podanego limitu czasu.

3 delayWhen

Ten operator opóźnia wartości emitowane ze źródła Observable na podstawie limitu czasu z innego obserwowalnego wziętego jako dane wejściowe.

4 followOn

Ten operator oparty na harmonogramie wejściowym ponownie wyemituje powiadomienia ze źródła Observable.

5 subscribeOn

Ten operator pomaga asynchronicznie subskrybować źródło Observable na podstawie harmonogramu przyjętego jako dane wejściowe.

6 Przedział czasowy

Ten operator zwróci obiekt, który zawiera bieżącą wartość i czas, jaki upłynął między bieżącą i poprzednią wartością, który jest obliczany przy użyciu danych wejściowych harmonogramu.

7 znak czasu

Zwraca znacznik czasu wraz z wartością wyemitowaną ze źródła Observable, która informuje o czasie, w którym wartość została wyemitowana.

8 koniec czasu

Ten operator zgłosi błąd, jeśli źródło Observable nie wyemituje wartości po określonym czasie.

9 toArray

Zbiera wszystkie wartości źródłowe z Observable i wyprowadza je jako tablicę po zakończeniu działania źródła.

Operatory warunkowe

Poniżej przedstawiono operatory, które omówimy w kategorii operatorów warunkowych.

Sr.No Operator i opis
1 defaultIfEmpty

Ten operator zwróci wartość domyślną, jeśli obserwowalne źródło jest puste.

2 każdy

Zwróci Observable na podstawie funkcji wejściowej, która spełnia warunek dla każdej wartości w źródle Observable.

3 odnaleźć

To zwróci obserwowalne, gdy pierwsza wartość źródła Observable spełnia warunek dla funkcji predykatu przyjętej jako dane wejściowe.

4 findIndex

Ten operator oparty na harmonogramie wejściowym ponownie wyemituje powiadomienia ze źródła Observable.

5 jest pusty

Ten operator da wynik jako prawdziwy, jeśli obserwowalne dane wejściowe przechodzą do pełnego wywołania zwrotnego bez emitowania żadnych wartości, lub jako fałsz, jeśli obserwowalne dane wejściowe emitują jakiekolwiek wartości.

Operatory multiemisji

Poniżej przedstawiono operatory, które omówimy w kategorii operatorów multiemisji.

Sr.No Operator i opis
1 multiemisja

Operator multiemisji współdzieli pojedynczą subskrypcję utworzoną z innymi abonentami. Parametry, które przyjmuje multiemisja, są podmiotem lub metodą fabryczną, która zwraca ConnectableObservable, która ma metodę connect (). Aby subskrybować, należy wywołać metodę connect ().

2 publikować

Ten operator zwraca ConnectableObservable i musi użyć metody connect (), aby zasubskrybować obserwowalne.

3 publikujBehavior

PublishingBehaviour korzysta z BehaviourSubject i zwraca ConnectableObservable. Aby zasubskrybować utworzony obiekt obserwowalny, należy użyć metody connect ().

4 publikujLast

PublishingBehaviour korzysta z AsyncSubject i zwraca ConnectableObservable. Aby zasubskrybować utworzony obiekt obserwowalny, należy użyć metody connect ().

5 publikujReplay

PublishingReplay korzysta z obiektu behawioralnego, w którym może buforować wartości i odtwarzać je nowym subskrybentom oraz zwracać ConnectableObservable. Aby zasubskrybować utworzony obiekt obserwowalny, należy użyć metody connect ().

6 dzielić

Jest to alias dla operatora mutlicast (), z tą różnicą, że nie trzeba ręcznie wywoływać metody connect (), aby rozpocząć subskrypcję.

Operatory obsługi błędów

Poniżej przedstawiono operatory, które omówimy w kategorii operatorów obsługi błędów.

Sr.No Operator i opis
1 catchError

Ten operator zajmuje się wychwytywaniem błędów w źródle Observable, zwracając nowy Observable lub błąd.

2 spróbować ponownie

Ten operator zajmie się ponowieniem próby z powrotem na źródle Observable, jeśli wystąpi błąd, a ponowna próba zostanie wykonana na podstawie podanej liczby wejściowej.