Kata pengantar
Inti dari RXJS adalah objek yang dapat diamati, yang merupakan kombinasi dari pemrograman asinkron dan peristiwa menggunakan urutan data yang dapat diamati.
Model pemrograman asinkron yang sangat mirip dengan ini adalah janji. Promise adalah model asinkron berdasarkan perubahan keadaan. Setelah keadaan menunggu memasuki keadaan yang sukses atau gagal, itu tidak dapat dimodifikasi lagi. Ketika keadaan berubah, pelanggan hanya bisa mendapatkan satu nilai; Sementara yang dapat diamati adalah model pemrograman asinkron berdasarkan urutan. Ketika urutan berubah, pelanggan dapat terus mendapatkan nilai baru. Selain itu, Promise hanya menyediakan mekanisme panggilan balik dan tidak memiliki lebih banyak operasi untuk mendukung pemrosesan hasil yang kompleks. Diobservasi menyediakan berbagai operator untuk memproses hasil operasi untuk memenuhi logika aplikasi yang kompleks.
Dalam pemrograman aktual, kami terutama berurusan dengan tiga objek: dapat diamati , pengamat , berlangganan :
Ambil acara klik elemen sebagai contoh untuk melihat cara menggunakan yang dapat diamati:
var clickStream = rx.observable baru (pengamat => {var handle = evt => pengamat evt.id);}, err => {console.error ('onError');}, () => {console.log ('onComplete');}); setTimeout (() => {berlangganan.unsubscribe ();}, 1000); Bukankah terlalu merepotkan jika setiap acara perlu dibungkus seperti ini? Oleh karena itu, RXJS memberi kami fungsi yang nyaman: Observable.fromEvent .
Operator Tautan Umum: Concat, Gabungkan, Combinelates, dll.
Operasi Proyeksi: peta, flatmap, flatmap perlu diperkenalkan
Filter: Filter, Berbagai Uang yang berbeda,
Klasifikasi Operator: Operator berdasarkan kategori
Penanganan kesalahan: Tangkap, coba lagi, akhirnya
Dekompresi: debounce, throttle, sampel, jeda
Kurangi: buffer, bufferwithcount, bufferwithtime
Untuk menguasai operator yang dapat diamati, Anda harus terlebih dahulu belajar memahami diagram urutan:
Panah mewakili urutan yang berubah dari waktu ke waktu. Misalnya, mengklik mouse secara terus menerus pada suatu elemen, dan lingkaran tersebut mewakili dampak dari urutan di luar. Misalnya, setiap klik elemen akan memicu panggilan balik acara, dan angka -angka dalam lingkaran adalah informasi yang dipancarkan dari luar. Misalnya, setiap pemicu acara akan memiliki objek acara, mewakili beberapa informasi dari operasi ini.
Untuk menggunakan secara fleksibel yang dapat diamati untuk menangani logika yang kompleks, Anda harus belajar menggunakan operator yang disediakannya. Saya membagi operator menjadi dua kategori: operasi urutan tunggal dan operasi urutan komposit. Operasi urutan tunggal mengacu pada operasi operasi yang dilakukan pada satu urutan. Operasi urutan majemuk mengacu pada operator yang memproses dua atau lebih urutan. Operasi urutan senyawa relatif sulit untuk dipahami.
Mari pertama-tama lihat operasi urutan tunggal, mengambil operasi peta sebagai contoh:
Operasi peta adalah untuk mengonversi informasi yang dikirim ke luar dalam urutan setiap saat. Seperti yang ditunjukkan pada gambar di atas, MAP mengalikan nilai transmisi setiap kali dengan sepuluh. Kemudian ketika pelanggan berlangganan, nilai berlangganan yang diperoleh setiap kali bukan lagi yang asli 123 tetapi yang dikonversi 10 20 30. melalui diagram urutan, Anda dapat lebih mudah memahami operasi yang dapat diamati.
Mari kita gabungkan sebagai contoh
Tujuan dari operasi penggabungan adalah untuk mensintesis dua urutan independen menjadi satu urutan. Awalnya, seiring berjalannya waktu, urutan 1 mentransmisikan A pada 100ms, B pada 200 ms, dan C pada 300ms, pelanggannya akan menerima tiga nilai ABC pada 400ms; Urutan 2 mentransmisikan D pada 150ms, E pada 250 ms, dan F pada 350 ms, dan pelanggannya menerima tiga nilai DEF dalam waktu 400 ms. Urutan baru setelah penggabungan akan menerima ABCDEF dalam waktu 400 ms (perhatikan pesanan).
Pemahaman operator umum:
Observable.
Observable.toarray: Mengubah semua nilai yang dipancarkan menjadi array ketika urutan selesai.
Observable.FlatMap: Mengubah elemen dalam aliran urutan asli menjadi aliran urutan baru dan menggabungkan aliran urutan baru ini ke lokasi elemen dalam urutan asli.
Observable.Startwith: Ini menetapkan nilai pertama dari urutan yang dapat diamati
Observable.comBinelatest: Mirip dengan Promiseall, itu akan dieksekusi hanya setelah semua urutan memiliki hasil.
Observable.scan: Nilai -nilai yang dipancarkan dalam urutan dapat dikumpulkan. Mirip dengan pengurangan, pengurangan akan mengumpulkan nilai -nilai seluruh urutan dan mengirim nilai akhir ketika urutan selesai.
Observable. Contoh: Dapatkan sampel tertentu dari urutan kontinu
Observable.merge: Gabungkan beberapa urutan menjadi satu, dan dapat digunakan sebagai atau
Observable.Timestamp: dapat memperoleh waktu transmisi setiap nilai transmisi
Observable.distincttilchanged (bandingkan, pemilih): Selector mengeluarkan kunci yang digunakan untuk perbandingan, dan membandingkannya untuk membandingkan dua tombol
Dapat diamati.
Meringkaskan
Di atas adalah seluruh konten artikel ini. Saya berharap konten artikel ini akan membantu untuk belajar atau bekerja semua orang. Jika Anda memiliki pertanyaan, Anda dapat meninggalkan pesan untuk berkomunikasi.