RxPY - praca z obserwowalnymi
Obserwowalne to funkcja, która tworzy obserwatora i dołącza go do źródła, w którym oczekiwane są wartości, na przykład kliknięcia, zdarzenia myszy z elementu dom itp.
Tematy wymienione poniżej zostaną szczegółowo omówione w tym rozdziale.
Utwórz obserwowalne
Zasubskrybuj i wykonaj obserwowalne
Twórz obserwowalne
Aby stworzyć obserwowalne, użyjemy create() metoda i przekaż do niej funkcję, która zawiera następujące elementy.
on_next() - Ta funkcja jest wywoływana, gdy Observable emituje element.
on_completed() - Ta funkcja jest wywoływana po zakończeniu Observable.
on_error() - Ta funkcja jest wywoływana, gdy wystąpi błąd w Observable.
Aby pracować z metodą create (), najpierw zaimportuj metodę, jak pokazano poniżej -
from rx import create
Oto działający przykład tworzenia obserwowalnych -
testrx.py
from rx import create
deftest_observable(observer, scheduler):
observer.on_next("Hello")
observer.on_error("Error")
observer.on_completed()
source = create(test_observable).
Zasubskrybuj i wykonaj obserwowalne
Aby zasubskrybować obserwowalną, musimy użyć funkcji subscribe () i przekazać funkcję zwrotną on_next, on_error i on_completed.
Oto działający przykład -
testrx.py
from rx import create
deftest_observable(observer, scheduler):
observer.on_next("Hello")
observer.on_completed()
source = create(test_observable)
source.subscribe(
on_next = lambda i: print("Got - {0}".format(i)),
on_error = lambda e: print("Error : {0}".format(e)),
on_completed = lambda: print("Job Done!"),
)
Metoda subscribe () dba o wykonanie obserwowalnego. Funkcja oddzwanianiaon_next, on_error i on_completedmusi zostać przekazana do metody subscribe. Z kolei wywołanie metody subscribe powoduje wykonanie funkcji test_observable ().
Przekazywanie wszystkich trzech funkcji zwrotnych do metody subscribe () nie jest obowiązkowe. Możesz przekazać zgodnie ze swoimi wymaganiami on_next (), on_error () i on_completed ().
Funkcja lambda jest używana dla on_next, on_error i on_completed. Przyjmie argumenty i wykona podane wyrażenie.
Oto wynik tego, co można zaobserwować -
E:\pyrx>python testrx.py
Got - Hello
Job Done!