دوره‌ها / Node.js / Events Module (Event Emitter)

Events Module (Event Emitter)

15 دقیقه Article

Events Module: Event Emitter در Node.js 📡

Event Emitter برای event-driven programming در Node.js استفاده میشه. این یکی از مفاهیم کلیدی Node.js است!

استفاده از EventEmitter:

const EventEmitter = require('events');

// ساخت instance
const myEmitter = new EventEmitter();

// Listening به event
myEmitter.on('greet', (name) => {
    console.log('Hello, ' + name + '!');
});

// Emit کردن event
myEmitter.emit('greet', 'John'); // Hello, John!

ساخت Custom Event Emitter:

const EventEmitter = require('events');

class MyClass extends EventEmitter {
    doSomething() {
        // انجام کار
        console.log('Doing something...');
        
        // Emit event
        this.emit('done', { result: 'success' });
    }
}

const myObject = new MyClass();

// Listening
myObject.on('done', (data) => {
    console.log('Done!', data);
});

myObject.doSomething();

Event Methods:

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

// on - listening به event
emitter.on('event', () => console.log('Event fired!'));

// once - فقط یک بار
emitter.once('event', () => console.log('Only once!'));

// emit - فراخوانی event
emitter.emit('event');
emitter.emit('event'); // فقط 'Event fired!' چاپ میشه

// removeListener - حذف listener
emitter.removeListener('event', handler);

// removeAllListeners - حذف همه listeners
emitter.removeAllListeners('event');
💡 نکته: Event Emitter برای decoupling و event-driven architecture عالیه!
✅ یاد گرفتید: Event Emitter برای event-driven programming ضروریه!

تمرین‌های عملی

برای تثبیت یادگیری این درس تمرین‌های زیر را حل کنید

تمرین: Event Emitter Easy
سوال تمرین

🎯 تمرین: ساخت Event Emitter سفارشی

یک Event Emitter بسازید که وقتی event 'data' فراخوانی میشه، داده رو log کنه.

پاسخ تمرین
JAVASCRIPT
const EventEmitter = require('events');

class MyEmitter extends EventEmitter {}

const emitter = new MyEmitter();

emitter.on('data', (data) => {
    console.log('Received:', data);
});

emitter.emit('data', 'Hello');
// Output: Received: Hello

آماده رفتن به درس بعدی هستید؟

این درس را به پایان رساندید و می‌توانید به درس بعدی بروید.