Jadual Kandungan
RxJS
Pasang RxJS
Buat Pemerhatian
Contoh
Arahan
Output
Pengendali dalam RxJS
Operator Peta
Operator Penapis
示例
说明
输出
结论
Rumah hujung hadapan web tutorial js Pengaturcaraan reaktif dengan JavaScript dan RxJS

Pengaturcaraan reaktif dengan JavaScript dan RxJS

Sep 09, 2023 pm 06:37 PM

使用 JavaScript 和 RxJS 进行响应式编程

Pengaturcaraan reaktif ialah paradigma pengaturcaraan yang mengendalikan aliran data tak segerak. Ini ialah cara menulis kod yang bertindak balas terhadap perubahan dengan lebih cepat dan mengendalikan peristiwa serta aliran data dengan lebih cekap.

Dalam pengaturcaraan reaktif, data diwakili sebagai aliran peristiwa. Peristiwa ini boleh menjadi apa sahaja daripada input pengguna kepada permintaan rangkaian kepada kemas kini pangkalan data. Program ini kemudian melanggan acara ini dan bertindak balas apabila ia berlaku.

Kaedah pengaturcaraan ini mempunyai banyak kelebihan. Pertama, ia memudahkan kerja dengan data tak segerak. Dalam pengaturcaraan tradisional, data tak segerak boleh menjadi sukar untuk dikendalikan kerana sukar untuk mengetahui bila data akan tersedia. Pengaturcaraan reaktif, sebaliknya, mengendalikan data tak segerak dengan cara yang lebih semula jadi dengan menganggapnya sebagai aliran peristiwa.

Kedua, pengaturcaraan reaktif membantu meningkatkan prestasi kod anda. Dengan melanggan acara, kod anda boleh dimaklumkan sebaik sahaja data baharu tersedia, jadi ia tidak perlu membuat tinjauan untuk data atau menunggu acara berlaku.

Akhir sekali, pengaturcaraan reaktif boleh membantu kod anda menjadi lebih boleh diselenggara. Dengan menganggap data sebagai aliran peristiwa, kod anda menjadi lebih deklaratif dan lebih mudah untuk memahami cara bahagian kod yang berlainan berinteraksi antara satu sama lain.

RxJS

RxJS ialah perpustakaan JavaScript yang menyediakan API pengaturcaraan reaktif. Ia ialah perpustakaan popular yang digunakan oleh banyak rangka kerja JavaScript yang popular seperti Angular dan React.

RxJS menawarkan banyak ciri yang menjadikannya sesuai untuk pengaturcaraan reaktif. Ciri-ciri ini termasuk -

  • Pemerhatian Pemerhatian ialah blok binaan asas RxJS. Ia mewakili aliran peristiwa dan boleh digunakan untuk mewakili sebarang jenis data, termasuk nombor, rentetan, objek dan tatasusunan.

  • Operator Operator ialah fungsi yang boleh digunakan untuk mengubah, menapis dan menggabungkan Observables. Terdapat sejumlah besar operator yang tersedia dalam RxJS, yang memungkinkan untuk melaksanakan pelbagai operasi dengan Observables.

  • SchedulerScheduler digunakan untuk mengawal masa Observables. Ia boleh digunakan untuk menyebabkan Observable menyala pada masa tertentu, atau untuk menangguhkan pelepasan peristiwa.

Pasang RxJS

Untuk mula menggunakan RxJS, kami perlu memasangnya. Buka terminal dan jalankan arahan berikut -

npm install rxjs
Salin selepas log masuk

Selepas pemasangan selesai, kita boleh mula meneroka kuasa pengaturcaraan reaktif RxJS.

Buat Pemerhatian

Pemerhatian berada di tengah-tengah RxJS. Mereka mewakili aliran data yang boleh diperhatikan oleh pelanggan.

Mari mulakan dengan mencipta Observable ringkas yang mengeluarkan urutan nombor -

Contoh

import { Observable } from 'rxjs';

const numberObservable = new Observable((observer) => {
   let count = 0;

   const interval = setInterval(() => {
      observer.next(count);
      count++;

      if (count > 5) {
         clearInterval(interval);
         observer.complete();
      }
   }, 1000);
});

numberObservable.subscribe((number) => {
   console.log(number);
});
Salin selepas log masuk

Arahan

Dalam kod di atas, kami mencipta Observable menggunakan kelas Observable dalam RxJS. Di dalam pembina, kami mentakrifkan logik untuk memancarkan nilai. Dalam contoh ini, kami menggunakan setInterval untuk mengeluarkan nombor setiap saat. Setelah kiraan mencapai 5, kami menghentikan selang dan memanggil observer.complete() untuk menandakan tamat strim.

Untuk memerhatikan nilai yang dipancarkan oleh Observable, kami memanggil kaedah langgan dan menyediakan fungsi panggil balik. Dalam kes ini, fungsi panggil balik hanya log nombor yang dipancarkan ke konsol.

Output

0 
1
2 
3 
4
5
Salin selepas log masuk

Pengendali dalam RxJS

RxJS menyediakan rangkaian luas pengendali yang membolehkan kami mengubah, menapis, menggabungkan dan memanipulasi data yang dipancarkan oleh Observables. Mari lihat beberapa pengendali biasa.

Operator Peta

Operator

map membolehkan kami mengubah nilai yang dipancarkan oleh Observable. Sebagai contoh, mari kita ubah suai contoh sebelumnya untuk menggandakan nombor yang dipancarkan -

Contoh

import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';

const numberObservable = new Observable((observer) => {
   let count = 0;

   const interval = setInterval(() => {
      observer.next(count);
      count++;

      if (count > 5) {
         clearInterval(interval);
         observer.complete();
      }
   }, 1000);
});

numberObservable
   .pipe(map((number) => number * 2))
   .subscribe((number) => {
      console.log(number);
   });
Salin selepas log masuk

Arahan

Dalam kod ini, kami menggunakan kaedah saluran paip untuk memautkan operator pemetaan kepada Observable kami. Operator pemetaan mengambil fungsi panggil balik yang menukar setiap nombor yang dipancarkan dengan menggandakannya. Nilai yang terhasil kemudiannya dihantar ke fungsi panggil balik pelanggan.

Output

0
2
4
6
8 
10
Salin selepas log masuk

Operator Penapis

Pengendali penapis membolehkan kami menapis secara selektif nilai yang dipancarkan oleh Observable berdasarkan keadaan. Mari tambahkan penapis pada contoh sebelumnya untuk mengeluarkan nombor genap sahaja -

示例

import { Observable } from 'rxjs';
import { filter } from 'rxjs/operators';

const numberObservable = new Observable((observer) => {
   let count = 0;

   const interval = setInterval(() => {
      observer.next(count);
      count++;

      if (count > 5) {
         clearInterval(interval);
         observer.complete();
      }
   }, 1000);
});

numberObservable
   .pipe(filter((number) => number % 2 === 0))
   .subscribe((number) => {
      console.log(number);
   });
Salin selepas log masuk

说明

在提供的代码中,我们创建了一个名为 numberObservable 的 Observable,它发出一系列数字。 Observable 使用 setInterval 发出从 0 开始的数字,每秒递增 1。发出数字 5 后,间隔被清除,Observable 使用observer.complete() 发出完成信号。

接下来,我们使用管道方法将过滤运算符应用于 numberObservable。过滤器运算符采用定义条件的回调函数。它过滤掉不满足条件的值,只允许偶数通过。

最后,我们订阅过滤后的 Observable,并使用订阅者的回调函数将每个发出的数字记录到控制台。

输出

0
2
4
Salin selepas log masuk

结论

总之,使用 JavaScript 和 RxJS 进行响应式编程提供了一种强大而有效的方法来处理异步数据流和构建响应式应用程序。通过拥抱 Observables 的概念并利用 RxJS 提供的丰富的运算符集,开发人员可以以声明式且优雅的方式轻松操作、转换和组合数据流。

通过本文讨论的示例,我们了解了如何创建 Observables、应用映射和过滤器等运算符来转换和过滤发出的值,以及订阅 Observables 来接收和处理数据。 RxJS 通过提供一致且可组合的方法简化了复杂异步流的管理。

Atas ialah kandungan terperinci Pengaturcaraan reaktif dengan JavaScript dan RxJS. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apa yang perlu saya lakukan jika saya menghadapi percetakan kod yang dihiasi untuk resit kertas terma depan? Apa yang perlu saya lakukan jika saya menghadapi percetakan kod yang dihiasi untuk resit kertas terma depan? Apr 04, 2025 pm 02:42 PM

Soalan dan penyelesaian yang sering ditanya untuk percetakan tiket kertas terma depan dalam pembangunan front-end, percetakan tiket adalah keperluan umum. Walau bagaimanapun, banyak pemaju sedang melaksanakan ...

Demystifying JavaScript: Apa yang berlaku dan mengapa penting Demystifying JavaScript: Apa yang berlaku dan mengapa penting Apr 09, 2025 am 12:07 AM

JavaScript adalah asas kepada pembangunan web moden, dan fungsi utamanya termasuk pengaturcaraan yang didorong oleh peristiwa, penjanaan kandungan dinamik dan pengaturcaraan tak segerak. 1) Pengaturcaraan yang didorong oleh peristiwa membolehkan laman web berubah secara dinamik mengikut operasi pengguna. 2) Penjanaan kandungan dinamik membolehkan kandungan halaman diselaraskan mengikut syarat. 3) Pengaturcaraan Asynchronous memastikan bahawa antara muka pengguna tidak disekat. JavaScript digunakan secara meluas dalam interaksi web, aplikasi satu halaman dan pembangunan sisi pelayan, sangat meningkatkan fleksibiliti pengalaman pengguna dan pembangunan silang platform.

Siapa yang dibayar lebih banyak Python atau JavaScript? Siapa yang dibayar lebih banyak Python atau JavaScript? Apr 04, 2025 am 12:09 AM

Tidak ada gaji mutlak untuk pemaju Python dan JavaScript, bergantung kepada kemahiran dan keperluan industri. 1. Python boleh dibayar lebih banyak dalam sains data dan pembelajaran mesin. 2. JavaScript mempunyai permintaan yang besar dalam perkembangan depan dan stack penuh, dan gajinya juga cukup besar. 3. Faktor mempengaruhi termasuk pengalaman, lokasi geografi, saiz syarikat dan kemahiran khusus.

Bagaimana untuk menggabungkan elemen array dengan ID yang sama ke dalam satu objek menggunakan JavaScript? Bagaimana untuk menggabungkan elemen array dengan ID yang sama ke dalam satu objek menggunakan JavaScript? Apr 04, 2025 pm 05:09 PM

Bagaimana cara menggabungkan elemen array dengan ID yang sama ke dalam satu objek dalam JavaScript? Semasa memproses data, kita sering menghadapi keperluan untuk mempunyai id yang sama ...

Bagaimana untuk mencapai kesan menatal paralaks dan kesan animasi elemen, seperti laman web rasmi Shiseido?
atau:
Bagaimanakah kita dapat mencapai kesan animasi yang disertai dengan menatal halaman seperti laman web rasmi Shiseido? Bagaimana untuk mencapai kesan menatal paralaks dan kesan animasi elemen, seperti laman web rasmi Shiseido? atau: Bagaimanakah kita dapat mencapai kesan animasi yang disertai dengan menatal halaman seperti laman web rasmi Shiseido? Apr 04, 2025 pm 05:36 PM

Perbincangan mengenai realisasi kesan animasi tatal dan elemen Parallax dalam artikel ini akan meneroka bagaimana untuk mencapai yang serupa dengan laman web rasmi Shiseido (https://www.shiseido.co.jp/sb/wonderland/) ... ...

Adakah JavaScript sukar belajar? Adakah JavaScript sukar belajar? Apr 03, 2025 am 12:20 AM

Pembelajaran JavaScript tidak sukar, tetapi ia mencabar. 1) Memahami konsep asas seperti pembolehubah, jenis data, fungsi, dan sebagainya. 2) Pengaturcaraan asynchronous tuan dan melaksanakannya melalui gelung acara. 3) Gunakan operasi DOM dan berjanji untuk mengendalikan permintaan tak segerak. 4) Elakkan kesilapan biasa dan gunakan teknik debugging. 5) Mengoptimumkan prestasi dan mengikuti amalan terbaik.

Perbezaan dalam Konsol.Log Output Result: Mengapa kedua -dua panggilan berbeza? Perbezaan dalam Konsol.Log Output Result: Mengapa kedua -dua panggilan berbeza? Apr 04, 2025 pm 05:12 PM

Perbincangan mendalam mengenai punca-punca utama perbezaan dalam output konsol.log. Artikel ini akan menganalisis perbezaan hasil output fungsi Console.log dalam sekeping kod dan menerangkan sebab -sebab di belakangnya. � ...

Bagaimana untuk melaksanakan fungsi seretan panel dan drop pelarasan yang serupa dengan vscode dalam pembangunan front-end? Bagaimana untuk melaksanakan fungsi seretan panel dan drop pelarasan yang serupa dengan vscode dalam pembangunan front-end? Apr 04, 2025 pm 02:06 PM

Terokai pelaksanaan fungsi seretan panel dan drop panel seperti VSCode di bahagian depan. Dalam pembangunan front-end, bagaimana untuk melaksanakan vscode seperti ...

See all articles