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