Hari ini menandakan Hari ke-6 pengembaraan pembelajaran Node.js saya, dan saya mendalami dunia kelas EventEmitter yang menarik. Begini cara saya menavigasinya dan perkara yang saya pelajari sepanjang perjalanan.
Kelas EventEmitter ialah asas dalam Node.js untuk mengurus acara. Ia menyediakan cara yang mantap untuk mencipta, memancarkan dan mengendalikan acara, menjadikannya penting untuk membina aplikasi yang bergantung pada seni bina dipacu peristiwa.
Kaedah Utama Pemancar Acara:
Tugas: Cipta acara dan pengendali tersuai.
Saya bermula dengan mencipta kelas yang memanjangkan EventEmitter dan menambah pengendali acara tersuai. Berikut ialah akaun langkah demi langkah tentang perkara yang saya lakukan:
Saya mencipta kelas yang dipanggil DataProcessor yang memanjangkan EventEmitter. Kelas ini mempunyai kaedah processData untuk mensimulasikan pemprosesan data.
const EventEmitter = require('events'); class DataProcessor extends EventEmitter { processData(data) { this.emit('start'); // Simulate data processing setTimeout(() => { this.emit('data', data); this.emit('end'); }, 1000); } }
Saya kemudiannya memulakan kelas DataProcessor dan menentukan pengendali untuk tiga acara: 'start', 'data' dan 'end'.
// Initialization const processor = new DataProcessor(); // Event handlers processor.on('start', () => console.log('Processing started...')); processor.on('data', (data) => console.log(`Processing data: ${data}`)); processor.on('end', () => console.log('Processing completed.'));
Akhir sekali, saya memanggil kaedah processData untuk melihat peristiwa dalam tindakan.
processor.processData('Some data');
Melihat urutan peristiwa yang berlaku adalah mencerahkan. Output konsol menunjukkan aliran daripada memulakan proses hingga mengendalikan data dan melengkapkannya.
Tugas: Bangunkan sistem pemberitahuan menggunakan acara.
Untuk tugas bebas, saya mereka bentuk kelas Pemberitahu. Begini cara saya mendekatinya:
const EventEmitter = require('events'); class Notifier extends EventEmitter { constructor() { super(); this.notifications = []; } addNotification(notification) { if (typeof notification !== 'string') { this.emit('error', 'Notification must be a string'); return; } this.notifications.push(notification); this.emit('notify', notification); if (this.notifications.length > 0) { this.emit('complete'); } } }
Saya menyediakan pengendali untuk 'memberitahu', 'ralat' dan 'menyelesaikan'.
const notifier = new Notifier(); notifier.on('notify', (message) => console.log(`New notification: ${message}`)); notifier.on('error', (err) => console.error(`Error: ${err}`)); notifier.on('complete', () => console.log('All notifications processed.'));
Saya menguji sistem dengan menambahkan pemberitahuan dan mengendalikan kemungkinan ralat.
notifier.addNotification('This is your first notification.'); notifier.addNotification('This is your second notification.'); notifier.addNotification(123); // This should trigger an error
Memang memuaskan hati melihat cara pemberitahuan dikendalikan, ralat dilaporkan dan peristiwa penyiapan telah dicetuskan.
Penerokaan EventEmitter hari ini telah memperdalam pemahaman saya tentang pengaturcaraan dipacu peristiwa dalam Node.js. Melaksanakan acara dan pengendali tersuai ialah cara yang baik untuk melihat cara acara mengalir dan cara ia boleh diurus dengan berkesan. Tugas bebas memperkukuh lagi konsep ini dan memberi saya pengalaman langsung dengan membina sistem pemberitahuan.
Saya teruja untuk meneruskan perjalanan ini dan melihat apa yang ada pada hari-hari seterusnya!
Semua pelajaran yang dibuat oleh ChatGPT boleh didapati di: https://king-tri-ton.github.io/learn-nodejs
Atas ialah kandungan terperinci Belajar Node.js dalam Hari dengan AI - Hari 6. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!