Pengenalan

Setiap implementasi yang spesifik dengan bahasa tertentu dari ReactiveX menerapkan sebuah set dari operator-operator. Meskipun terdapat kemungkinan tumpang tindih diantara implementasi-implementasinya, ada juga beberapa operator yang hanya diterapkan pada implementasi tertentu. Dan juga, tiap implementasi cenderung untuk menamai operatornya sendiri agar mirip dengan beberapa method yang sudah diterapkan di konteks lainnya pada bahasa tersebut.

Menggabungkan Operator

Kebanyakan operator beroperasi pada sebuah Observable dan mengembalikan sebuah Observable. Ini memungkinkan anda untuk mengaplikasikan operator-operator tersebut satu demi satu, seperti sebuah rantai. Masing-masing operator pada rantai tersebut mengubah Observable yang merupakan hasil dari operasi yang dilakukan operator sebelumnya.

Ada beberapa pattern yang lain, seperti Builder Pattern, yang dimana beberapa method dari sebuah class tertentu beroperasi pada sebuah item pada class yang sama dengan cara mengubah obyeknya melalui operasi method tersebut. Pattern seperti itu juga memungkinkan anda untuk menggabungkan method-method dengan cara yang hampir sama. Tetapi di Builder Pattern, urutan dari method apa yang dipakai di rantai pemanggilan method biasanya tidak berpengaruh, sedangkan pada operator Observable, urutan berpengaruh.

Sebuah rantai operator Observable tidak beroperasi secara indenpenden terhadap Observable asalnya yang memulai rantai tersebut, tetapi beroperasi secara bergantian, masing-masing beroperasi pada Observable yang dibentuk oleh operator sebelumnya dalam rantai tersebut.

Operator-operator dari ReactiveX

Halaman ini mempunyai daftar yang bisa dianggap sebagai operator “inti” di ReactiveX, dan memiliki tautan dengan halaman-halaman yang memiliki informasi yang lebih lengkap bagaimana operator tersebut bekerja dan bagaimana versi dari bahasa-bahasa yang menerapkan operator-operator tersebut.

Kemudian ada sebuah “decision tree” yang mungkin bisa membantu anda menentukan operator apa yang paling cook anda gunakan sesuai kebutuhan anda.

Dan akhirnya, ada sebuah daftar yang disusun menurut abjad tentang hampir setiap operator yang dapat dipakai di bahasa-bahasa yang menerapkan ReactiveX. Daftar tersebut akan memiliki tautan ke halaman yang berisi operator inti yang paling miirp dengan operator masing-masing bahasa tersebut (contohnya, Rx.NET & operator “SelectMany” terhubung ke dokumentasi Operator ReactiveX FlatMap, yang dimana “SelectMany” adalah implementasi dari Rx.NET).

Jika anda ingin mengimplementasi operator anda sendiri, lihat Menerapkan Operator Anda Sendiri.

Konten

  1. Operators berdasarkan Kategori
  2. Sebuah Decision Tree dari Operator Observable
  3. Sebuah Daftar Operator Observable yang Disusun Menurut Abjad

Operators berdasarkan Kategori

Membuat Observable

Operator yang membuat Observable baru.

  • Create — membuat sebuah Observable dari awal dengan memanggil method observer secara terprogram
  • Defer — jangan membuat Observable sampai observer melakukan subscribe, dan membuat sebuah Observable baru untuk tiap observer
  • Empty/Never/Throw — membuat Observable yang memiliki perilaku yang tepat dan terbatas
  • From — mengubah beberapa obyek atau struktur data menjadi sebuah Observable
  • Interval — membuat sebuah Observable yang memancarkan sebuah deret yang terjeda oleh suatu satuan waktu tertentu
  • Just — mengubah sebuah obyek atau sebuah set dari obyek menjadi sebuah Observable yang memancarkan obyek tersebut.
  • Range — membuat sebuah Observable yang memancarkan sebuah deret bilangan dalam batasan tertentu
  • Repeat — membuat sebuah Observable yang memancarkan item atau deret tertentu secara berulang-ulang
  • Start — membuat sebuah Observable yang memancarkan hasil dari sebuah fungsi
  • Timer — membuat sebuah Observable yang memancarkan tepat satu item setelah jangka waktu tertentu

Mengubah Observable

Operator yang mengubah item yang dipancarkan oleh suatu Observable.

  • Buffer — mengumpulkan item dari sebuah Observable secara berkala menjadi sebuah kumpulan/ bundel dan memancarkan bundel tersebut daripada memancarkan item satu per satu
  • FlatMap — mengubah item yang diemit oleh sebuah Observable menjadi beberapa Observable, kemudian meratakan emisi-emisi tersebut menjadi sebuah Observable
  • GroupBy — membagi sebuah Observable menjadi beberapa set Observable yang dimana masing masing memancarkan grup item yang berbeda dari Observable asalnya, diatur dengan sebuah key
  • Map — mengubah item-item yang dipancarkan oleh sebuah Observable dengan menerapkan sebuah fungsi ke masing-masing item
  • Scan — menerapkan sebuah fungsi kepada masing-masing item yang dipancarkan oleh sebuah Observable, secara berurutan, dan memancarkan nilainya
  • Window — secara berkala membagi item dari sebuah Observable menjadi jendela Obervable dan memancarkan jendela tersebut daripada item satu per satuows and emit these windows rather than emitting the items one at a time

Menyaring Observable

Operator yang secara selektif memancarkam item dari sumber Observable.

  • Debounce — hanya memancakan sebuah item dari sebuah Observable jika sudah melewati jangka waktu tertentu tanpa memancarkan item lainnya
  • Distinct — menahan item duplikat yang dipancarkan oleh sebuah Observable
  • ElementAt — hanya memancarkan item n yang dipancarkan oleh sebuah Observable
  • Filter — hanya memancarkan item yang sudah melewati uji predikat
  • First — hanya memancarkan item pertama, atau item pertama yang memenuhi kondisi tertentu, dari sebuah Observable
  • IgnoreElements — tidak memancarkan item apapun dari sebuah Observable tetapi hanya mengikutinya memancarkan notifikasi berhenti
  • Last — memancarkan hanya item terakhir yang dipancarkan oleh Observable
  • Sample — memancarkan item terbaru yang dipancarkan oleh sebuah Observable dalam jangka waktu tertentu
  • Skip — menahan n item pertama yang dipancarkan oleh sebuah Observable
  • SkipLast — menahantn item terakhir yang dipancarkan oleh sebuah Observable
  • Take — memancarkan hanya n items pertama yang dipancarkan oleh sebuah Observable
  • TakeLast — memancarkan hanya n items terakhir yang dipancarkan oleh sebuah Observable

Menggabungkan Observables

Operator yang bekerja dengan lebih dari sumber Observable untuk membuat satu Observable

  • And/Then/When — menggabungkan set dari item yang dipancarkan oleh dua atau lebih Observable melalui suatu Pola atau Rencana
  • CombineLatest — ketika sebuah item dipancarkan oleh salah satu dari dua Observable, menggabungkan item paling terbaru yang dipancarkan oleh masing-masing Observable melalui sebuah fungsi yang sudah didefinisikan berdasarkan hasil dari fungsi ini
  • Join — menggabungkan item yang dipancarkan oleh dua Observable kapanpun sebuah item dari satu Observable dipancarkan selama sebuah jangka waktu yang ditentukan tergantung dari item yang dipancarkan Observable yang lainnya
  • Merge — menggabungkan beberapa Observable menjadi satu dengan cara menggabungkan emisi mereka
  • StartWith — memancarkan sebuah deret yang sudah ditentukan sebelum mulai untuk memancarkan item dari Observable sumber
  • Switch — mengubah sebuah Observable yang memancarkan Observable menjadi sebuah Observable yang memancarkan item dari Observable terbaru yang memancarkan item
  • Zip — menggabungkan emisi-emisi dari lebih dari satu Observable bersama-sama melalui sebuah fungsi yang sudah ditentukan dan memancarkan satu item untuk setiap kombinasi berdasarkan hasil dari fungsi ini

Operator Penanganan Error

Operator yang membantu untuk pulih dari notifikasi error dari sebuah Observable

  • Catch — pulih dari sebuah notifikasi onError dengan melanjutkan deret tanpa error
  • Retry — jika sebuah Observable sumber mengirim sebuah notifikasi onError, akan dilakukan proses subscribe ulang dengan harapan itu akan berhasil dan selesai tanpa ada error

Operator Observable Utilitas

Sekumpulan Operator yang berguna ketika bekerja dengan Observables

  • Delay — menggeser emisi ke beberapa saat di waktu yang akan datang
  • Do — mendaftarkan sebuah aksi untuk dieksekusi dalam beberapa kejadian sepanjang masa hidupnya
  • Materialize/Dematerialize — merepresentasikan baik item yang dipancarkan dan notifikasi yang dikirimkan sebagai item yang dipancarkan, atau membalikkan proses ini
  • ObserveOn — menentukan scheduler tempat dimana observer akan mengamati Observable ini
  • Serialize — memaksa sebuah Observable untuk membuat beberapa panggilan secara serial dan untuk menormalkan Observable tersebut
  • Subscribe — beroperasi terhadap emisi-emisi dan notifikasi-notifikasi dari sebuah Observable
  • SubscribeOn — menentukan scheduler tempat yang akan digunakan sebuah Observable ketika dilakukan subscribe kepadanya
  • TimeInterval — mengubah sebuah Observable yang memancarkan item menjadi Observable yang memancarkan indikasi waktu yang telah berlalu diantara emisi-emisi tersebut
  • Timeout — mencerminkan Observable sumber, tetapi membuat sebuah notifikasi error jika sudah melewati jangka waktu tertentu tanpa memancarkan item apapun
  • Timestamp — melampirkan sebuah stempel waktu kepada masing-masing item yang dipancarkan oleh sebuah Observabke
  • Using — membuat sebuah sumber daya yang dapat dibuang yang memiliki masa hidup sama seperti sebuah Observable

Operator Conditional dan Boolean

Operator yang mengevaluasi satu atau lebih Observable atau item yang dipancarkan oleh beberapa Observable

  • All — menentukan apakah semua item yang dipancarkan oleh sebuah Observable memenuhi kriteria tertentu
  • Amb — diberikan dua atau lebih Observable sumber, pancarkan semua item dari Observable yang paling dulu memancarkan item diantara Observable-observable tersebut
  • Contains — menentukan apakah sebuah Observable memancarkan item tertentu atau tidak
  • DefaultIfEmpty — memancarkan item dari Observable sumber, atau sebuah nilai tertentu jika Observable tersebut tidak memancarkan apapun
  • SequenceEqual — menentukan apakah dua observable memancarkan deretan item yang sama
  • SkipUntil — membuang item yang dipancarkan oleh sebuah Observable sampai sebuah Observable kedua memancarkan sebuah item
  • SkipWhile — membuang item yang dipancarkan oleh sebuah Observable sampai sebuah kondisi yang ditentukan menjadi false
  • TakeUntil — mengambil item yang dipancarkan oleh sebuah Observable sampai sebuah Observable kedua memancarkan sebuah item atau berhenti
  • TakeWhile — mengambil item yang dipancarkan oleh sebuah Observable sebelum kondisi yang ditentukan menjadi false

Operator Matematika and Agregat

Operator yang beroperasi pada pada seluruh deret item yang dipancarkan Observable

  • Average — menghitung rata-rata dari angka yang dipancarkan oleh sebuah Observable dan memancarkan hasilnya
  • Concat — memancarkan emisi dari dua atau lebih Observable tanpa menyisipkan mereka
  • Count — menghitung jumlah angka yang dipancarkan oleh Observable sumber lalu memancarkan hasilnya
  • Max — menentukan, dan memancarkan, nilai maksimal dari item yang dipancarkan Observable
  • Min — menentukan, dan memancarkan, nilai minimal dari item yang dipancarkan Observable
  • Reduce — menerapkan sebuah fungsi ke tiap item yang dipancarkan oleh sebuah Observable secara berurutan dan memancarkan nilai akhirnya
  • Sum — menghitung jumlah dari angka-angka yang dipancarkan oleh sebuah Observable dan memancarkan hasilnya

Operator Backpressure

  • operator backpressure — strategi yang digunakan untuk mengatasi Observable yang menghasilkan item jauh lebih cepat dari yang dikonsumsi observer

Operator Observable Connectable

Observable khusus yang memiliki dinamika subscription yang lebih terkontrol dengan tepat

  • Connect — menginstruksikan sebuah Observable connectable untuk mulai memancarkan item kepada subscriber-nya
  • Publish — mengubah sebuah Observable biasa menjadi sebuah Observable connectable
  • RefCount — membuat sebuah Observable connectable berperilaku seperti sebuah Observable biasa
  • Replay — memastikan semua observer melihat deret yang sama dari item yang dipancarkan, bahkan jika mereka baru melakukan subscribe setelah Observable tersebut sudah mulai memancarkan item

Operators untuk Mengubah Observables

  • To — mengubah sebuah Observable menjadi obyek atau struktur data yang lain

Sebuah Decision Tree dari Operator Observable

Tree ini dapat mmbantu anda menemukan operator yang sedang anda cari.

Saya ingin membuat sebuah Observable yang baru
yang memancarkan hanya sebuah item
Just
yang dikembalikan dari sebuah fungsi yang dipanggil saat sedang disubscribe
Start
yang dikembalikan dari sebuah Action, Callable, Runnable, atau sejenisnya, yang dipanggil saat sedang disubscribe
From
setelah jeda waktu tertentu
Timer
yang menarik emisinya dari sebuah Array, Iterable, atau sejenisnya
From
dengan mengambilnya dari sebuah Future
Start
yang mendapatkan deretnya dari sebuah Future
From
yang memancarkan deret item secara berulang-ulang
Repeat
yang dibuat dari awal, dengan logika tertentu
Create
untuk setiap observer yang melakukan subscribe
Defer
yang memancarkan sederet angka
Range
pada interval tertentu
Interval
setelah jeda waktu tertentu
Timer
yang langsung selesai tanpa memancarkan apapun
Empty
yang tidak melakukan apapun
Never
Saya ingin membuat sebuah Observable dengan cara menggabungkannya dengan Observable lainnya
dan memancarkan semua item dari semua Observable tidak peduli urutan kapan mereka diterima
Merge
dan memancarkan semua item dari semua Observable, satu per satu
Concat
dengan mengombinasikan item dari dua atau lebih Observable secara berurutan untuk menghasilkan item baru untuk dipancarkan
kapanpun setiap Observable telah memancarkan sebuah item baru
Zip
kapanpun salah satu dari Observables telah memancarkan item baru
CombineLatest
kapanpun sebuah item dipancarkan oleh satu Observable dalam jangka waktu yang sudah ditentukan oleh sebuah item yang dipancarkan oleh Observable yang lain
Join
melalui Pola dan Rencana
And/Then/When
dan memancarkan item hanya dari Observable terbaru yang memancarkan item
Switch
Saya ingin memancarkan item dari sebuah Observable setelah mengubah mereka
satu per satu menggunakan sebuah fungsi
Map
dengan memancarkan semua item yang dipancarkan Observable yang bersangkutan
FlatMap
satu per satu Observable, dengan urutan kapan mereka dipancarkan
ConcatMap
berdasarkan semua item yang mendahului mereka
Scan
dengan menyertakan sebuah stempel waktu kepada mereka
Timestamp
menjadi sebuah indikasi dari waktu yang telah berlalu sebelum pancaran item tersebut
TimeInterval
Saya ingin menunda pancaran yang dilakukan oleh sebuah Observable untuk beberapa saat sebelum memulai memancarkannya kembali
Delay
Saya ingin mengubah item dan notifikasi dari sebuah Observable menjadi item baru dan kemudian memancarkan mereka kembali
dengan membungkus mereka dalam obyek Notifikasi
Materialize
yang dimana bisa dibuka kembali
Dematerialize
Saya ingin mengabaikan semua item yang dipancarkan oleh sebuah Observable dan hanya mengirimkan notifikasi completed/error-nya
IgnoreElements
Saya ingin mencerminkan sebuah Observable tetapi ingin menambahkan beberapa item sebelum pancarannya
StartWith
hanya jika pancaran tersebut merupakan pancaran kosong
DefaultIfEmpty
Saya ingin mengumpulkan item dari sebuah Observable dan memancarkan mereka kembali buffer dari item-item
Buffer
yang hanya mengandung item terakhir yang dipancarkan
TakeLastBuffer
Saya ingin memisahkan satu Observable menjadi beberapa Observable
Window
hingga beberapa item yang mirip akan tergabung menjadi Observable yang sama
GroupBy
Saya hanya ingin mengambil item tertentu yang dipancarkan oleh sebuah Observable:
item terakhir yang dipancarkan sebelum Observable tersebut menyelesaikan pancarannya
Last
satu-satunya item yang dipancarkan
Single
item pertama yang dipancarkan
First
Saya ingin memancarkan kembali beberapa item tertentu dari sebuah Observable
dengan menyaring item yang tidak sesuai dengan predikat tertentu
Filter
yang merupakan item paling pertama
First
yang merupakan beberapa item pertama
Take
yang merupakan item terakhir
Last
yang merupakan item n
ElementAt
yang merupakan item setelah beberapa item pertama
setelah n item
Skip
sampai satu atau lebih item cocok dengan predikat
SkipWhile
setelah jeda waktu tertentu
Skip
setelah Observable kedua memancarkan sebuah item
SkipUntil
yang merupakan semua item kecuali beberapa item terakhir
kecuali n item terakhir
SkipLast
sampai satu atau lebih item cocok dengan predikat
TakeWhile
kecuali item yang dipancarkan selama jeda waktu tertentu sebelum sumbernya menyelesaikan pancarannya
SkipLast
kecuali item yang dipancarkan setelah sebuah Observable kedua mulai memancarkan item
TakeUntil
dengan mencontoh Observable secara berkala
Sample
dengan hanya memancarkan item yang tidak diikuti oleh item lainnya dalam jangka waktu tertentu
Debounce
dengan menahan item yang merupakan duplikasi dari item yang sudah dipancarkan
Distinct
jika kemudian mereka diikuti langsung oleh item yang merupakan duplikatnya
DistinctUntilChanged
dengan menahan subscription untuk jangka waktu tertentu setelah dia mulai memancarkan item
DelaySubscription
Saya ingin memancarkan kembali item dari sebuah Observable jika dan hanya jika itu merupakan Observable pertama dari sekumpulan Observable yang memancarkan item
Amb
Saya ingin mengevaluasi seluruh deret item yang dipancarkan oleh sebuah Observable
dan memancarkan sebuah boolean jika semua item telah melewati suatu proses uji tertentu
All
dan memancarkan sebuah boolean yang menandakan bahwa Observable telah memancarkan item apapun (yang telah melewati suatu proses uji tertentu)
Contains
dan memancarkan sebuah boolean yang menandakan bahwa Observable tersebut tidak memancarkan item apapun
IsEmpty
dan memancarkan sebuah boolean yang menandakan deret tersebut sama dengan yang dipancarkan oleh sebuah Observable kedua
SequenceEqual
dan memancarkan rata-rata dari semua nilai mereka
Average
dan memancarkan jumlah dari semua nilai mereka
Sum
dan memancarkan sebuah angka yang menyimbolkan jumlah item dalam deret tersebut
Count
dan memancarkan sebuah item dengan nilai paling maksimal
Max
dan memancarkan sebuah item dengan nilai paling minimal
Min
dengan menerapkan sebuah fungsi agregasi kepada masing-masing item lalu kemudian memancarkan hasilnya
Scan
Saya ingin mengubah seluruh bagian dari deret item yang dipancarkan oleh sebuah Observable menjadi struktur data yang lain
To
Saya ingin sebuah operator yang bisa digunakan untuk beroperasi pada Scheduler tertentu
SubscribeOn
ketika memberi notifikasi kepada observer
ObserveOn
Saya ingin sebuah Observable yang bisa melakukan suatu aksi jika event tertentu terjadi
Do
Saya ingin sebuah Observable yang akan memberitahu observer jika terjadi suatu error
Throw
jika sudah melewati jangka waktu tertentu dengan tidak memancarkan item apapun
Timeout
Saya ingin Observable yang bisa pulih dengan lancar
dari sebuah timeout dengan menggantinya dengan sebuah Observable cadangan
Timeout
dari sebuah notifikasi error yang akan datang
Catch
dengan mencoba untuk melakukan subscribe ulang ke Observable
Retry
Saya ingin membuat suatu sumber yang memiliki masa hidup yang sama dengan Observable-nya
Using
Saya ingin untuk melakukan subscribe kepada sebuah Observable dan menerima sebuah Future yang melakukan blok sampai Observable tersebut selesai
Start
Saya ingin sebuah Obervable yang tidak akan mulai memancarkan item ke subscriber sampai diminta oleh subscribernya
Publish
dan kemudian memancarkan item terakhir di deret itemnya
PublishLast
dan kemudian memancarkan deret tersebut secara lengkap, bahkan kepada subscriber yang baru melakukan subscribe ketika observer sudah memancarkan item-item sebelumnya
Replay
tetapi saya ingin item-item tersebut untuk ditiadakan ketika semua subscriber nya melakukan unsubscribe
RefCount
kemudian saya ingin memintanya untuk mulai
Connect

Lihat Juga

Sebuah Daftar Operator Observable yang Disusun Menurut Abjad

Secara resmi, operator inti ditandai dengan cetakan tebal. Sisanya merepresentasikan jenis operator yang diimplementasi oleh bahasa-bahasa tersendiri atau operator khusus diluar dari operator-operator utama dari ReactiveX.