Panduan Pemula untuk Events di Node.js

Hai sana, para ahli Node.js masa depan! Hari ini, kita akan memulai perjalanan menarik ke dunia Events di Node.js. Jangan khawatir jika Anda belum pernah menulis baris kode sebelumnya - saya akan menjadi panduan ramah Anda, dan kita akan mengexplorasi topik ini bersama langkah demi langkah. Jadi, ambil secangkir kopi (atau teh, jika itu hal Anda), dan mari kita masuk ke dalam!

Node.js - Events

Apa Itu Events di Node.js?

Sebelum kita masuk ke detilnya, mari kita mulai dengan analogi sederhana. Bayangkan Anda di sebuah pesta (pasti pesta Node.js, tentu saja!). Anda sedang berbicara dengan teman-teman, dan tiba-tiba seseorang menjerit, "Pizza datang!" Jeritan itu adalah suatu event, dan reaksi Anda - mungkin melari untuk mengambil sepotong - adalah bagaimana Anda menangani event itu.

Di Node.js, events bekerja sama seperti itu. Mereka adalah hal-hal yang terjadi dalam program Anda, dan Anda dapat menetapkan reaksi khusus (kami sebutnya "listeners") untuk merespon saat events ini terjadi.

Kelas EventEmitter

Pada inti dari events di Node.js adalah sesuatu yang disebut kelas EventEmitter. Bayangkan itu seperti tuan rumah pesta yang bertanggung jawab untuk menjeritkan pengumuman (mengeluarkan events) dan memastikan bahwa semua orang yang ingin mendengar tentang pizza (atau event lainnya) mendapat pesan.

Mari lihat bagaimana kita dapat membuat EventEmitter sendiri:

const EventEmitter = require('events');

// Buat objek EventEmitter baru
const myEmitter = new EventEmitter();

Dalam kode ini, kita pertama-tama mengimpor modul events, yang memberikan kita akses ke kelas EventEmitter. Kemudian, kita membuat instance baru EventEmitter yang dinamai myEmitter. Objek myEmitter ini sekarang dapat mengeluarkan events dan mendengarkan mereka.

Mengeluarkan dan Menangani Events

Sekarang kita memiliki EventEmitter, mari belajar bagaimana menggunakannya. Kita akan mulai dengan dua metode yang paling penting: on() dan emit().

Metode on()

Metode on() digunakan untuk menambahkan fungsi listener ke event tertentu. Itu seperti mengatakan ke teman-teman Anda, "Hey, beritakan kepada saya saat pizza tiba!"

Ini adalah bagaimana kita menggunakannya:

myEmitter.on('pizzaArrived', () => {
console.log('Yay! Pizza sudah di sini!');
});

Dalam contoh ini, kita mengatakan ke myEmitter untuk mendengarkan event 'pizzaArrived'. Saat event ini terjadi, ia akan menjalankan fungsi yang kita sediakan, yang hanya mencetak pesan ke konsol.

Metode emit()

Metode emit() digunakan untuk memicu event tertentu. Itu seperti benar-benar menjerit "Pizza datang!" di pesta.

mari lihat bagaimana itu bekerja:

myEmitter.emit('pizzaArrived');

Saat baris ini dijalankan, itu akan memicu event 'pizzaArrived', dan semua listener yang terikat ke event ini akan menjalankan fungsi mereka.

Mari kita gabungkan semuanya:

const EventEmitter = require('events');
const myEmitter = new EventEmitter();

myEmitter.on('pizzaArrived', () => {
console.log('Yay! Pizza sudah di sini!');
});

myEmitter.emit('pizzaArrived');
// Output: Yay! Pizza sudah di sini!

Jalankan kode ini, dan Anda akan melihat pesan dicetak ke konsol. Selamat! Anda telah membuat dan menangani event Node.js pertama Anda!

Mengirimkan Argumen dengan Events

kadang-kadang, Anda ingin mengirimkan informasi tambahan dengan event. Misalnya, mungkin Anda ingin menentukan jenis pizza yang tiba. Kita dapat melakukan ini dengan mengirimkan argumen ke metode emit():

const EventEmitter = require('events');
const myEmitter = new EventEmitter();

myEmitter.on('pizzaArrived', (type) => {
console.log(`Yay! Pizza ${type} sudah di sini!`);
});

myEmitter.emit('pizzaArrived', 'pepperoni');
// Output: Yay! Pizza pepperoni sudah di sini!

Dalam contoh ini, kita mengirimkan 'pepperoni' sebagai argumen saat kita mengeluarkan event. Fungsi listener kemudian dapat menggunakan argumen ini dalam tanggapan nya.

Listener Ganda

Anda dapat menambahkan beberapa listener ke event yang sama. Misalnya, katakanlah orang-orang berbeda di pesta ingin merespon berbeda saat pizza tiba:

const EventEmitter = require('events');
const myEmitter = new EventEmitter();

myEmitter.on('pizzaArrived', () => {
console.log('Orang 1: Saya akan mengambil piring!');
});

myEmitter.on('pizzaArrived', () => {
console.log('Orang 2: Saya akan mengisi minuman!');
});

myEmitter.on('pizzaArrived', () => {
console.log('Orang 3: Saya akan memainkan musik!');
});

myEmitter.emit('pizzaArrived');
// Output:
// Orang 1: Saya akan mengambil piring!
// Orang 2: Saya akan mengisi minuman!
// Orang 3: Saya akan memainkan musik!

Saat Anda menjalankan kode ini, Anda akan melihat semua tanggapan dicetak ke konsol. Listener dipanggil dalam urutan mereka didaftarkan.

Listener Satu kali

kadang-kadang, Anda hanya ingin mendengarkan event sekali. Untuk ini, kita memiliki metode once(). Itu seperti mengatakan, "Hanya beritakan kepada saya saat pizza pertama tiba, setelah itu saya tidak perlu mengetahui lagi."

const EventEmitter = require('events');
const myEmitter = new EventEmitter();

myEmitter.once('pizzaArrived', () => {
console.log('Pizza pertama sudah tiba!');
});

myEmitter.emit('pizzaArrived');
// Output: Pizza pertama sudah tiba!

myEmitter.emit('pizzaArrived');
// Tidak ada output

Dalam contoh ini, listener kedua emit() tidak menghasilkan output karena listener dihapus setelah menjalankan sekali.

Events Kesalahan

Di Node.js, ada event khusus yang disebut 'error'. Jika event kesalahan diekspedisi dan tidak ada listener untuknya, Node.js akan mencetak stack trace dan keluar dari program. Itu selalu baik untuk memiliki listener kesalahan:

const EventEmitter = require('events');
const myEmitter = new EventEmitter();

myEmitter.on('error', (err) => {
console.error('Ups! Ada yang salah:', err);
});

myEmitter.emit('error', new Error('Oven pizza rusak!'));
// Output: Ups! Ada yang salah: Error: Oven pizza rusak!

Menghapus Listener

Jika Anda tidak lagi ingin mendengarkan event, Anda dapat menghapus listener menggunakan metode removeListener():

const EventEmitter = require('events');
const myEmitter = new EventEmitter();

function pizzaHandler() {
console.log('Waktu pizza!');
}

myEmitter.on('pizzaArrived', pizzaHandler);

myEmitter.emit('pizzaArrived');
// Output: Waktu pizza!

myEmitter.removeListener('pizzaArrived', pizzaHandler);

myEmitter.emit('pizzaArrived');
// Tidak ada output

Ringkasan Metode EventEmitter

Berikut adalah tabel yang menggabungkan metode utama yang kita pelajari:

Metode Deskripsi
on(eventName, listener) Menambahkan fungsi listener ke event tertentu
emit(eventName[, ...args]) Memicu event tertentu, optional dengan argumen
once(eventName, listener) Menambahkan fungsi listener sekali ke event tertentu
removeListener(eventName, listener) Menghapus listener tertentu dari event tertentu
removeAllListeners([eventName]) Menghapus semua listener, atau hanya listener event tertentu

Dan itu saja! Anda telah mengambil langkah pertama ke dunia events di Node.js. Ingat, latihan membuat sempurna, jadi jangan takut untuk mencoba konsep ini. Cobalah membuat event Anda sendiri, mungkin untuk permainan sederhana atau aplikasi chat.

Saat Anda terus melanjutkan perjalanan Anda di Node.js, Anda akan menemukan bahwa events adalah alat kuat untuk membuat aplikasi responsif dan event-driven. Mereka digunakan secara luas di banyak aplikasi dan pustaka Node.js, jadi memahaminya dengan baik akan membantu Anda dalam proyek masa depan Anda.

Terus mengoding, terus belajar, dan terutama, terus bersenang-senang! Dan ingat, baik itu coding atau pizza, itu selalu lebih baik saat dipartisi dengan teman. Selamat Node.js-ing!

Credits: Image by storyset