Single

RxJava (and turunannya seperti RxGroovy & RxScala) telah mengembangkan sebuah varian Observable yang disebut “Single.”

Sebuah Single merupakan sesuatu yang mirip seperti Observable. tetapi berbeda dengan Observable yang memancarkan sebuah runtutan nilai — dari tidak ada sama sekali hingga tidak terhingga —, sebuah Single selalu memancarkan tepat satu nilai atau sebuah notifikasi error.

Untuk alasan ini, daripada melakukan subscribe ke sebuah Single dengan tiga cara yang anda lakukan untuk merespon kepada notifikasi dari sebuah Observable (onNext, onError, and onCompleted), anda hanya akan menggunakan dua method untuk melakukan subscribe:

onSuccess
sebuah Single meneruskan method ini dengan satu satunya item yang akan dipancarkan oleh Single tersebut
onError
sebuah Single meneruskan method ini dengan Throwable yang menyebabkan Single tidak bisa memancarkan item

Sebuah Single hanya akan memanggil salah satu dari 2 method ini, dan hanya akan memanggilnya sekali. Setelah selai melakukan pemanggilan salah satu dari 2 method tersebut, Single tersebut akan berhenti secara otomatis dan semua subscription kepada Single tersebut juga akan berhenti.

Komposisi melalui Operator Single

Seperti Observable, Single bisa dimanipulasi dengan berbagai operator. Beberapa operator juga memungkinkan penggunaan interface diantara Observable dan Single sehingga anda dapat menggabungkan keduanya:

operatortipedeskripsi
composeSinglemembuat anda bisa membuat operator kustom
concat dan concatWithObservablemenggabungkan item yang dipancarkan oleh beberapa Single sebagai pancaran Observable
createSinglemembuat sebuah Single dari awal dengan cara memanggil method subscriber
delaySinglemove the emission of an item from a Single forward in time
doOnErrorSinglemengembalikan sebuah Single yang juga memanggil sebuah method yang anda tentukan ketika onError dipanggil
doOnSuccessSinglemengembalikan sebuah Single yang juga memanggil sebuah method yang anda tentukan ketika onSuccess dipanggil
errorSinglemengembalikan sebuah Single yang langsung memberitahu subscriber-subscribernya jika terjadi error
flatMapSinglemengembalikan sebuah Single yang dimana merupakan hasil dari fungsi yang diaplikasikan kepada satu item yang dipancarkan oleh Singke
flatMapObservableObservablemengembalikan sebuah Observable yang merupakan hasil dari fungsi yang diaplikasikan ke sebuah item yang dipancarkan oleh Single
fromSinglemengubah sebuah Future menjadi sebuah Single
justSinglemengembalikan sebuah Single yang memancarkan suatu item tertentu
mapSinglemengembalikan sebuah Single yang memancarkan hasil dari sebuah fungsi yang diaplikasikan ke item yang dipancarkan oleh Single sumber
mergeSinglemengubah sebuah Single yang memancarkan sebuah Single kedua menjadi sebuah Single yang memancarkan item-item yang dipancarkan oleh Single kedua tersebut
merge and mergeWithObservablemenggabungkan item-item yang dipancarkan oleh beberapa Single menjadi pancaran-pancaran Observable
observeOnSinglemenginstruksikan Single untuk memanggil method subscriber pada Scheduler tertentu
onErrorReturnSinglemengubah sebuah Single yang membuat suatu notifikasi error menjadi sebuah Single yang memancarkan item tertentu
subscribeOnSinglemenginstruksikan Single untuk beroperasi pada Scheduler tertentu
timeoutSinglemengembalikan sebuah Single yang membuat notifikasi error jika Single sumber tidak memancarkan apapun dalam jangka waktu tertentu
toSingleSinglemengubah sebuah Observable yang memancrkan sebuah item menjadi sebuah Single yang memancarkan item tersebut
toObservableObservablemengubah sebuah Single menjadi sebuah Observable yang memancarkan item yang dipancarkan oleh Single tersebut lalu kemudian akan selesai
zip and zipWithSinglemengembalikan sebuah Single yang memancarkan sebuah item, dimana item tersebut merupakan hasil dari sebuah fungsi yang diaplikasikan ke item-item yang dipancarkan oleh dua atau lebih Single

Bagian dibawah dari halaman ini akan menampilan diagram kelereng yang akan menjelaskan operator-operator tersebut The following sections of this page will give marble diagrams that explain these operators secara berurutan. Diagram ini menjelaskan bagaimana Single direpresentasikan dalam diagram kelereng:

compose

concat and concatWith

Ada juga versi contoh dari operator ini:

create

delay

Ada juga versi dari operator ini yang memungkinkan anda untuk melakukan penundaan pada waktu tertentu Scheduler:

doOnError

doOnSuccess

error

flatMap

flatMapObservable

from

Ada juga jenis yang memerlukan sebuah Scheduler sebagai argumen:

just

map

merge and mergeWith

Satu versi dari merge yang mengambil Single yang memancarkan sebuah Single kedua dan kemudian mengubahnya menjadi sebuah Single yang memancarkan item-item yang dipancarkan oleh Single kedua:

Versi lainnya mengambil dua atau lebih Single dan menggabungkan mereka manjadi sebuah Observable yang memancarkan item-item yang sebelumnya dipancarkan oleh Single sumbernya (dalam urutan yang acak):

observeOn

onErrorReturn

subscribeOn

timeout

Timeout akan menyebabkan sebuah Single untuk membatalkan dengan sebuah notifikasi error jika Single tersebut tidak memancarkan sebuah item dalam jangka waktu tertentu setelah di-subscribe. Salah satu versi memungkinkan anda untuk mengatur timeout menggunakan beberapa satuan waktu:

Anda juga bisa menentukan Scheduler tertentu sebagai tempat timer tersebut akan beroperasi:

Sebuah versi dari operator timeout yang memungkinkan anda untuk berubah menjadi sebuah Single cadangan daripada mengirimkan notifikasi error jika timout tersebut sudah melewati batas waktu yang ditentukan:

Ini, juga, mempunyai sebuah Scheduler yang spesifik sesuai versinya:

toObservable

zip dan zipWith