Spec-Zone.ru › ReactiveX

Одиночный элемент

RxJava (и его производные, такие как RxGroovy и RxScala) разработал вариант Observable под названием «Одиночный элемент» (Single).

Одиночный элемент — это нечто похожее на Observable, но вместо излучения серии значений — от нуля до бесконечного числа — он всегда излучает одно значение или уведомление об ошибке.

По этой причине вместо подписки на Single с тремя методами, используемыми для реагирования на уведомления от Observable (onNext, onError и onCompleted), для подписки используются только два метода:

onSuccess
Одиночный элемент передает этот метод единственному элементу, который излучает Одиночный элемент
onError
Одиночный элемент передает этот метод исключению (Throwable), которое привело к тому, что Одиночный элемент не смог излучить элемент

Одиночный элемент вызовет только один из этих методов и только один раз. После вызова любого метода Одиночный элемент завершается, и подписка на него заканчивается.

Композиция с помощью операторов Single

Как и Observable, Single можно изменять с помощью различных операторов. Некоторые операторы также позволяют создавать интерфейс между миром Observable и миром Single, чтобы вы могли смешивать эти два типа:

Оператор Возвращает Описание
compose Single позволяет создавать пользовательский оператор
concat и concatWith Observable конкатенирует элементы, излучаемые несколькими Single, как излучения Observable
create Single создает Single с нуля, явно вызывая методы подписчика
delay Single смещает излучение элемента из Single во времени
doOnError Single возвращает Single, который также вызывает указанный метод при вызове onError
doOnSuccess Single возвращает Single, который также вызывает указанный метод при вызове onSuccess
error Single возвращает Single, который немедленно уведомляет подписчиков об ошибке
flatMap Single возвращает Single, который является результатом применения функции к элементу, излучаемому Single
flatMapObservable Observable возвращает Observable, который является результатом применения функции к элементу, излучаемому Single
from Single преобразует Future в Single
just Single возвращает Single, который излучает указанный элемент
map Single возвращает Single, который излучает результат применения функции к элементу, излучаемому исходному Single
merge Single преобразует Single, излучающий второй Single, в Single, который излучает элемент, излученный вторым Single
merge и mergeWith Observable объединяет элементы, излучаемые несколькими Single, как излучения Observable
observeOn Single указываем Single вызывать методы подписчика на определенном Планировщике
onErrorReturn Single преобразует Single, который генерирует уведомление об ошибке, в Single, который излучает указанный элемент
subscribeOn Single указываем Single выполнять операции на определенном Планировщике
timeout Single возвращает Single, который генерирует уведомление об ошибке, если исходный Single не излучает значение в течение указанного периода времени после подписки на него
toSingle Single преобразует Observable, который излучает один элемент, в Single, который излучает этот элемент
toObservable Observable преобразует Single в Observable, который излучает элемент, излученный Single, а затем завершается
zip и zipWith Single возвращает Single, который излучает элемент, являющийся результатом применения функции к элементам, излучаемым двумя или более другими Single

В следующих разделах этой страницы будут представлены диаграммы с марками, которые схематически объяснят эти операторы. Эта диаграмма объясняет, как Single представлены в диаграммах с марками:

compose

concat и concatWith

Существует также версия этого оператора для экземпляров:

create

delay

Также существует версия этого оператора, которая позволяет выполнять задержку на определенном Планировщике:

doOnError

doOnSuccess

error

flatMap

flatMapObservable

from

Также существует вариант, который принимает Планировщик в качестве аргумента:

just

map

merge и mergeWith

Одна версия merge принимает Single, который излучает второй Single, и преобразует его в Single, который излучает элемент, излученный вторым Single:

Другая версия принимает два или более Single и объединяет их в Observable, который излучает элементы, излучаемые исходными Single (в произвольном порядке):

observeOn

onErrorReturn

subscribeOn

timeout

Timeout приведет к прерыванию Single с уведомлением об ошибке, если он не излучит элемент в течение указанного периода времени после подписки на него. Одна версия позволяет установить этот таймаут с помощью указанного количества единиц времени:

Вы также можете указать определенный Планировщик для работы таймера:

Версия оператора timeout позволяет переключиться на резервный Single вместо отправки уведомления об ошибке, если таймаут истек:

У этой версии также есть версия, специфичная для Планировщика:

toObservable

zip и zipWith

© ReactiveX contributors
Licensed under the Apache License 2.0.
http://reactivex.io/documentation/single.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API