Pemancar acara adalah objek di NodeJS yang memicu acara dengan mengirimkan pesan untuk memberi sinyal bahwa suatu tindakan telah terjadi.

Node.js menyediakan modul acara bawaan. Ini berisi kelas penghasil peristiwa yang memungkinkan Anda membuat dan menangani peristiwa khusus melalui fungsi panggilan balik.

Di sini Anda akan mempelajari cara memancarkan peristiwa, mendengarkan dan menangani data peristiwa, dan menangani kesalahan peristiwa di NodeJS.

Memancarkan Peristiwa

Modul acara adalah bagian inti dari lingkungan sisi server Node.js. Jadi, Anda tidak perlu menginstalnya, tetapi sebelum menggunakan EventEmitter kelas, Anda harus mengimpor dari modul acara dan membuat instance-nya.

Seperti itu:

const Pemancar Peristiwa = memerlukan("peristiwa");

// Instansiasi EventEmitter
const myEmitter = baru Pemancar Peristiwa();

Anda dapat memancarkan acara menggunakan EventEmitter'S memancarkan metode. Itu memancarkan metode mengambil an nama acara dan sejumlah argumen yang berubah-ubah sebagai parameter.

instagram viewer

Setelah Anda menelepon memancarkan metode, itu memancarkan lulus nama acara. Kemudian secara sinkron memanggil setiap pendengar acara sesuai urutan Anda mendaftarkannya, meneruskan argumen yang disediakan ke masing-masing. Akhirnya, itu kembali BENAR jika acara tersebut memiliki pendengar dan PALSU jika tidak ada pendengar.

Misalnya:

myEmitter.emit("TestEvent", "foo", "batang", 1, 2);

Di blok kode di atas, Anda lulus TestEvent sebagai NamaAcara, Dan "foo,” "batang,” 1, Dan 2 sebagai argumen. Ketika blok kode di atas berjalan, itu akan memberi tahu semua pendengar yang mendengarkan TestEvent peristiwa. Ini akan memanggil pendengar tersebut dengan argumen yang diberikan.

Mendengarkan Acara

Anda dapat mendengarkan acara yang dipancarkan menggunakan EventEmitter'S pada metode. Itu pada metode mengambil an NamaAcara dan fungsi callback sebagai parameter. Saat acara dengan NamaAcara berlalu ke pada metode dipancarkan, itu memanggil fungsi panggilan baliknya. Metode ini mengembalikan referensi ke EventEmitter, memungkinkan Anda menyambungkan beberapa panggilan.

Misalnya:

// Pendengar Pertama
myEmitter.on("TestEvent", () => {
konsol.log("TestEvent Dipancarkan!!!");
}); // TestEvent Dipancarkan!!!

// Pendengar Kedua
myEmitter.on("TestEvent", (...arg) => {
args = args.bergabung(", ");
menghibur.catatan(`Peristiwa dipancarkan dengan argumen berikut: ${args}`);
}); // Acara dipancarkan dengan argumen berikut: foo, bar, 1, 2

myEmitter.emit("TestEvent", "foo", "batang", 1, 2);

Di blok kode di atas, saat TestEvent acara memancarkan, pendengar untuk acara tersebut akan memanggil fungsi panggilan balik mereka. Pendengar akan bereaksi dalam urutan yang Anda daftarkan, artinya panggilan balik "pendengar pertama" akan berjalan sebelum yang kedua, dan seterusnya.

Anda dapat mengubah perilaku ini menggunakan EventEmitter'S prependListener metode. Metode ini mengambil parameter yang sama dengan pada metode. Perbedaannya adalah metode ini bereaksi terhadap acara terlebih dahulu, terlepas dari waktu Anda mendaftarkannya.

Misalnya:

myEmitter.on("TestEvent", () => {
konsol.log("TestEvent Dipancarkan!!!");
});

myEmitter.prependListener("TestEvent", () => {
konsol.log("Dieksekusi terlebih dahulu")
})

// console.log (myEmitter.listeners("TestEvent"));
myEmitter.emit("TestEvent", "foo", "batang", 1, 2);

Saat blok kode di atas dijalankan, "Eksekusi terlebih dahulu" akan dicatat terlebih dahulu ke konsol, diikuti oleh "TestEvent Emitted!!!" terlepas dari urutan yang Anda daftarkan karena prependListener metode.

Jika Anda mendaftarkan beberapa pendengar dengan prependListener metode, mereka akan berjalan dalam urutan dari yang terakhir ke yang pertama.

Perhatikan susunan emitor dan listener. Pendengar selalu datang sebelum emitor. Pengaturan ini karena pendengar harus sudah mendengarkan acara sebelum emitor memancarkannya.

Untuk konteksnya, pertimbangkan blok kode di bawah ini:

myEmitter.emit("TestEvent", "foo", "batang", 1, 2);

myEmitter.on("TestEvent", () => {
konsol.log("TestEvent Dipancarkan!!!");
});

Jika Anda menjalankan blok kode di atas, tidak terjadi apa-apa karena, pada saat emitor memancarkan peristiwa, tidak ada pendengar yang mendengarkan peristiwa tersebut.

Mendengarkan Acara Sekali

Bergantung pada kebutuhan Anda, Anda mungkin perlu menangani beberapa peristiwa hanya sekali dalam siklus hidup aplikasi Anda. Anda dapat mencapai ini menggunakan EventEmitter'S sekali metode.

Metode ini mengambil argumen yang sama dengan pada metode dan bekerja sama. Satu-satunya perbedaan adalah bahwa pendengar terdaftar dengan sekali metode hanya mendengarkan acara sekali.

Misalnya:

myEmitter.once("SingleEvent", () => {
konsol.log("Acara ditangani sekali");
});

myEmitter.emit("SingleEvent"); // Acara ditangani sekali
myEmitter.emit("SingleEvent"); // Diabaikan
myEmitter.emit("SingleEvent"); // Diabaikan

Menjalankan blok kode hanya akan mencatat "Acara ditangani sekali" ke konsol satu kali, terlepas dari seberapa sering emitor memancarkan peristiwa tersebut.

Pendengar terdaftar dengan sekali metode bereaksi terhadap acara dalam urutan Anda mendaftarkannya. Anda dapat mengubah perilaku ini menggunakan prependOnceListener metode, yang bekerja seperti prependListener. Satu-satunya perbedaan adalah bahwa pendengar terdaftar dengan sekali metode hanya mendengarkan acara sekali.

Menangani Kesalahan Dengan Pemancar Peristiwa

Anda harus berhati-hati menangani kesalahan JavaScript dengan tepat dan pendengar acara tidak terkecuali. Kesalahan yang tidak tertangani dari mereka akan menyebabkan proses Node.js keluar dan aplikasi Anda macet.

Untuk menangani kejadian kesalahan, setidaknya salah satu pendengar kejadian harus memilikinya NamaAcara mulai kesalahan.

Misalnya:

myEmitter.on("kesalahan", (kesalahan) => {
menghibur.kesalahan(`Kesalahan: ${kesalahan}`);
});

Memiliki pendengar yang menangani potensi kesalahan, seperti pada blok kode di atas, akan menghentikan aplikasi agar tidak mogok saat terjadi kesalahan.

Misalnya:

myEmitter.emit("kesalahan", Kesalahan baru("Ini adalah kesalahan"));

Menjalankan blok kode di atas akan mencatat "Ini adalah kesalahan" ke konsol karena pemroses sedang menangani kejadian kesalahan.

Mengelola Pendengar Acara

Itu EventEmitter class memiliki beberapa metode yang memungkinkan Anda memanipulasi dan mengelola event listener. Anda bisa mendapatkan pendengar acara, menghapusnya, dan mengatur jumlah maksimum pendengar untuk suatu acara.

Berikut tabel yang berisi EventEmitter metode Anda dapat memanipulasi pendengar Acara dengan:

metode Argumen Nilai Pengembalian
jumlah pendengar nama acara Mengembalikan jumlah pendengar yang berlangganan acara
pendengar nama acara Mengembalikan array pendengar
hapusListener nama acara Menghapus setidaknya satu pendengar dari eventName yang ditentukan.
hapusAllListeners nama acara Menghapus semua pendengar untuk eventName tertentu. Jika Anda tidak menentukan nama acara, panggilan metode ini akan menghapus semua pendengar untuk EventEmitter.
setMaxListeners nomor Mengubah jumlah pendengar maksimum default per peristiwa. Gunakan infinity atau nol untuk menunjukkan jumlah pendengar yang tidak terbatas. Secara default, Anda hanya dapat berlangganan sepuluh pendengar ke suatu acara.

Anda hanya dapat memanggil metode ini di an EventEmitter contoh.

Misalnya:

myEmitter.removeListener("TestEvent");

Blok kode di atas menghapus satu pendengar untuk TestEvent peristiwa.

Pentingnya Pemancar Acara

Node.js mengadopsi paradigma pemrograman berbasis peristiwa dengan dukungannya untuk pemancar dan pendengar peristiwa. Pemrograman berbasis peristiwa adalah salah satu alasan mengapa program Node.js lebih cepat dan mudah daripada beberapa alternatif. Anda dapat dengan mudah menyinkronkan beberapa acara, menghasilkan peningkatan efisiensi.