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:
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.
Seperti Observable, Single bisa dimanipulasi dengan berbagai operator. Beberapa operator juga memungkinkan penggunaan interface diantara Observable dan Single sehingga anda dapat menggabungkan keduanya:
operator | tipe | deskripsi |
---|---|---|
compose | Single | membuat anda bisa membuat operator kustom |
concat dan concatWith | Observable | menggabungkan item yang dipancarkan oleh beberapa Single sebagai pancaran Observable |
create | Single | membuat sebuah Single dari awal dengan cara memanggil method subscriber |
delay | Single | move the emission of an item from a Single forward in time |
doOnError | Single | mengembalikan sebuah Single yang juga memanggil sebuah method yang anda tentukan ketika onError dipanggil |
doOnSuccess | Single | mengembalikan sebuah Single yang juga memanggil sebuah method yang anda tentukan ketika onSuccess dipanggil |
error | Single | mengembalikan sebuah Single yang langsung memberitahu subscriber-subscribernya jika terjadi error |
flatMap | Single | mengembalikan sebuah Single yang dimana merupakan hasil dari fungsi yang diaplikasikan kepada satu item yang dipancarkan oleh Singke |
flatMapObservable | Observable | mengembalikan sebuah Observable yang merupakan hasil dari fungsi yang diaplikasikan ke sebuah item yang dipancarkan oleh Single |
from | Single | mengubah sebuah Future menjadi sebuah Single |
just | Single | mengembalikan sebuah Single yang memancarkan suatu item tertentu |
map | Single | mengembalikan sebuah Single yang memancarkan hasil dari sebuah fungsi yang diaplikasikan ke item yang dipancarkan oleh Single sumber |
merge | Single | mengubah sebuah Single yang memancarkan sebuah Single kedua menjadi sebuah Single yang memancarkan item-item yang dipancarkan oleh Single kedua tersebut |
merge and mergeWith | Observable | menggabungkan item-item yang dipancarkan oleh beberapa Single menjadi pancaran-pancaran Observable |
observeOn | Single | menginstruksikan Single untuk memanggil method subscriber pada Scheduler tertentu |
onErrorReturn | Single | mengubah sebuah Single yang membuat suatu notifikasi error menjadi sebuah Single yang memancarkan item tertentu |
subscribeOn | Single | menginstruksikan Single untuk beroperasi pada Scheduler tertentu |
timeout | Single | mengembalikan sebuah Single yang membuat notifikasi error jika Single sumber tidak memancarkan apapun dalam jangka waktu tertentu |
toSingle | Single | mengubah sebuah Observable yang memancrkan sebuah item menjadi sebuah Single yang memancarkan item tersebut |
toObservable | Observable | mengubah sebuah Single menjadi sebuah Observable yang memancarkan item yang dipancarkan oleh Single tersebut lalu kemudian akan selesai |
zip and zipWith | Single | mengembalikan 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:
Ada juga versi contoh dari operator ini:
Ada juga versi dari operator ini yang memungkinkan anda untuk melakukan penundaan pada waktu tertentu Scheduler:
Ada juga jenis yang memerlukan sebuah Scheduler sebagai argumen:
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):
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: