Adakah yang bisa menjelaskan perbedaan antara Observable, Completable dan Single di RxJava dengan contoh yang jelas?
Dalam skenario mana kita menggunakan salah satu dari yang lain?
Adakah yang bisa menjelaskan perbedaan antara Observable, Completable dan Single di RxJava dengan contoh yang jelas?
Dalam skenario mana kita menggunakan salah satu dari yang lain?
Jawaban:
Observable
adalah blok penyusun ReactiveX generik, dari sumber peristiwa yang memancarkan nilai dari waktu ke waktu. (dan dengan demikian ada di setiap bahasa yang diperluas ReactiveX ke)
dalam peristiwa singkat yang dapat diamati adalah:
onNext * (onCompleted | onError)? / (* nol atau lebih? - nol atau 1)
Single
dan Completable
merupakan tipe baru yang diperkenalkan secara eksklusif di RxJava yang mewakili tipe tereduksi Observable
, yang memiliki API lebih ringkas.
Single
mewakili Observable
yang memancarkan nilai tunggal atau kesalahan.
Completable
menyatakan Observable
bahwa tidak memancarkan nilai, tetapi hanya kejadian terminal, baik onError
atauonCompleted
Anda dapat memikirkan perbedaan seperti perbedaan metode yang mengembalikan:
Koleksi Objek - Dapat diamati
Objek tunggal - Tunggal
dan metode yang tidak mengembalikan nilai (metode kosong) - Dapat diselesaikan.
Single
dapat sesuai ketika Anda memiliki berorientasi tugas Dapat diamati dan Anda mengharapkan nilai tunggal, seperti permintaan Jaringan yang dilakukan sekali dan mengembalikan nilai (atau kesalahan), panggilan jaringan dioperasikan dalam mode satu waktu, yang berarti Anda tidak mengharapkannya untuk mengembalikan nilai tambahan lembur. Contoh lainnya adalah operasi data pengambilan DB.
Completable
sesuai jika Anda memiliki Observable
dan tidak peduli dengan nilai yang dihasilkan dari operasi tersebut, atau tidak ada. Contohnya adalah memperbarui cache misalnya, operasi bisa berhasil / gagal, tetapi tidak ada nilai.
Contoh lain adalah beberapa operasi init yang berjalan lama yang tidak mengembalikan apa pun. Ini bisa berupa panggilan jaringan UPDATE / PUT yang dihasilkan dengan indikasi keberhasilan saja.
Bagaimanapun, Completable dan Single tidak menambahkan kemampuan baru tetapi mereka memperkenalkan API yang lebih kuat dan ringkas, yang memberi tahu lebih banyak tentang operasi di balik Observable yang diekspos oleh API.
Edit:
Maybe
:RxJava2 menambahkan tipe baru yang disebut Maybe
, Maybe
adalah kombinasi dari Completable
dan Tunggal.
Dalam bahasa yang sama seperti di atas, Maybe
dapat dianggap sebagai metode yang mengembalikan
Optional
beberapa jenis, Optional
adalah pembungkus di sekitar Objek yang secara eksplisit memberi tahu apakah kita memiliki beberapa nilai di dalamnya - Object
atau tidak (bukan null).
Dengan Maybe
kita dapat memiliki beberapa nilai persis seperti Single
atau tidak mengembalikan apa-apa - sama seperti Completable
. Selain itu, seperti keduanya, kami mengalami kesalahan.
Maybe
bernilai ketika kita ingin menandai bahwa suatu Observable
mungkin tidak memiliki nilai dan hanya akan selesai.
Contoh akan diambil dari cache, kita belum tentu memiliki nilai di cache, jadi dalam hal ini, kita akan menyelesaikannya, sekarang kita akan mendapatkan onNext
nilai dari cache.
Ini juga layak untuk menangani nilai non-null dalam streaming dengan RxJava2.
Flowable
:Pertama, mari kita definisikan tekanan balik. Backpressure adalah cara menangani situasi di mana data dihasilkan lebih cepat daripada pemrosesannya. Flowable
memiliki dukungan backpressure yang memungkinkan downstream untuk meminta item. Anda dapat membaca lebih lanjut tentang perbedaannya di sini .
Maybe<T>
pada dasarnya Single<T?>
?
Single
untuk menjadi Completable
dengan nilai yang dikembalikan?
Jawaban singkat yang saya temukan di sini di bagian RXJava.