Чи можете будь-хто пояснити, будь ласка, різницю між спостережуваним, складним та одиночним в RxJava чіткими прикладами?
У якому сценарії ми використовуємо один над іншими?
Чи можете будь-хто пояснити, будь ласка, різницю між спостережуваним, складним та одиночним в RxJava чіткими прикладами?
У якому сценарії ми використовуємо один над іншими?
Відповіді:
Observable
є загальним будівельним блоком ReactiveX, джерелом подій, який випромінює значення з часом. (і, отже, існує у всіх мовах, на які ReactiveX поширюється)
коротко. Спостережуваними подіями є:
onNext * (onCompleted | onError)? / (* нуль або більше? - нуль або 1)
Single
і Completable
це нові типи, введені виключно на RxJava, які представляють зменшені типи Observable
, які мають більш стислий API.
Single
представляють, Observable
що випромінюють одне значення або помилку.
Completable
представляють, Observable
що не випускає значення, а лише кінцеві події, onError
абоonCompleted
Ви можете думати про відмінності, як про відмінності методу, який повертається:
Колекція об'єктів - спостережувана
Одиничний об’єкт - Одинарний
і метод, який не повертає значень (метод void) - Завершений.
Single
може бути доцільним, коли у вас є орієнтоване на завдання Оглянене, і ви очікуєте єдиного значення, наприклад, мережевий запит, який виконується один раз і повертає значення (або помилка), мережевий дзвінок керується одночасно, тобто ви не очікуєте, що він поверне додаткові значення через деякий час. Інший приклад - операція з отриманням даних БД.
Completable
підходить, коли у вас є Observable
і вам не байдуже значення, отримане в результаті операції, або його немає. Наприклад, оновлення кеша, наприклад, операція може бути успішною / невдалою, але значення немає.
Інший приклад - деяка тривала операція init, яка нічого не повертає. Це може бути UPDATE / PUT мережевий дзвінок, який спричинив лише показник успіху.
У будь-якому випадку, Completable і Single не додають нових можливостей, але вони впроваджують більш надійні та стислі API, що розповідає більше про операції, що стоять за спостережуваним, що піддається API.
Редагувати:
Maybe
:RxJava2 додав новий тип, який називається Maybe
, Maybe
є комбінацією Completable
та Single.
Цією ж мовою, як і вище, Maybe
може розглядатися як метод, який повертає
Optional
певний тип, Optional
- це обгортка навколо Об'єкта, яка явно повідомляє, чи є у нас якесь значення - Object
чи ні (замість нуля).
З Maybe
ми можемо або мати якесь - то значення в точності , як Single
і немає повернення нічого - так само , як Completable
. Крім того, як і обидва, ми маємо помилку.
Maybe
є цінним, коли ми хочемо відзначити, що потенціал Observable
може не мати значення і просто завершиться.
Приклад може бути отриманий з кеша, ми не обов’язково матимемо значення в кеші, тому в цьому випадку ми завершимо, onNext
оскільки отримаємо зі значенням з кеша.
Це також гідно для обробки ненульових значень у потоці з RxJava2.
Flowable
:Спочатку визначимося з тиском. Зворотний тиск - це засіб вирішення ситуації, коли дані генеруються швидше, ніж вони можуть бути оброблені. Flowable
має підтримку зворотного тиску, що дозволяє запитувати предмети. Детальніше про відмінності ви можете прочитати тут .
Maybe<T>
, по суті, так Single<T?>
?
Single
себе Completable
повернутим значенням?
Коротку відповідь я знайшов тут, у розділі RXJava.