II. Tworzenie własnego emitera danych
W podobny sposób jak w poprzednim zadaniu chcielibyśmy obsługiwać pobieranie zdjęć dla zapytań PhotoDownloader#searchForPhotos(String). W tym przypadku nie wystarczy jednak utworzyć obiektu Observable dla gotowego obiektu kolekcji zdjęć. Zanim zdjęcia zostaną pobrane, program musi wyszukać je w sieci używając podanego zapytania.
-
Wszystkie te operacje powinny zostać wykonane wewnątrz obiektu
Observable. Aby stworzyćObservabledla niestandardowego źródła emisji wykorzystaj konstrukcję:Observable.create(observer -> { try { ... for (...) { observer.onNext(...); } ... observer.onComplete(); } catch (SomeError e) { observer.onError(e); } });Nie chcemy by błąd podczas pobierania pojedynczego zdjęcia przerywał cały proces. Należy pamiętać o tym, że wywołanie
onErrorkończy całą emisję! Strumień powinien zakończyć się błędem tylko w sytuacji, gdy samo wyszukiwanie zdjęć (DuckDuckGoDriver#searchForImages) się nie powiedzie.Operacje do wykorzystania:
Create(opens in a new tab) -
Odpowiedz na pytania:
- Czy sposób obsługi
Observablepo stroniePhotoCrawlerróżni się w obu przykładach? - Jakie wzorce projektowe zostały tu wykorzystane?
- Czy sposób obsługi