Node.js Events
Understanding Node.js Events
Node.js operates on an event-driven architecture, meaning it listens for specific occurrences (events) and executes corresponding functions (listeners) when those events occur. This model is highly efficient for non-blocking I/O operations, making Node.js well-suited for scalable applications. The EventEmitter class in the events module serves as the foundation for event handling in Node.js. It allows you to create, manage, and respond to custom events in a structured manner.
Syntax of Node.js Events
To work with events, first, import the events module and instantiate an EventEmitter object.
const EventEmitter = require('events'); // Import the events module
const eventEmitter = new EventEmitter(); // Create an EventEmitter instance
Registering an Event Listener
To work with events, first, import the events module and instantiate an EventEmitter object.
eventEmitter.on('eventName', () => {
console.log('Event triggered!');
});
Emitting an Event
To work with events, first, import the events module and instantiate an EventEmitter object.
eventEmitter.emit('eventName'); // Triggers the listener function
Passing Arguments to Events
To work with events, first, import the events module and instantiate an EventEmitter object.
eventEmitter.on('greet', (name) => {
console.log(`Hello, ${name}!`);
});
eventEmitter.emit('greet', 'Alice'); // Output: Hello, Alice!
One-Time Event Listener
To work with events, first, import the events module and instantiate an EventEmitter object.
eventEmitter.once('welcome', () => {
console.log('This will run only once.');
});
eventEmitter.emit('welcome'); // Executes
eventEmitter.emit('welcome'); // Will not execute again
Removing an Event Listener
To work with events, first, import the events module and instantiate an EventEmitter object.
const myListener = () => console.log('Listener Active');
eventEmitter.on('notify', myListener);
eventEmitter.off('notify', myListener); // Removes listener
Real-World Example: Simulating a Server Request
const EventEmitter = require('events');
class Server extends EventEmitter {
requestReceived(data) {
console.log('Processing request...');
this.emit('response', data);
}
}
const myServer = new Server();
// Defining the response event
myServer.on('response', (data) => {
console.log(`Response Sent: ${data}`);
});
// Simulating an incoming request
myServer.requestReceived('Success!');
Conclusion
Node.js event-driven architecture provides a robust and efficient mechanism for handling asynchronous operations. With EventEmitter, developers can design scalable applications that react dynamically to various triggers. Mastering events is crucial for building high-performance, non-blocking applications such as real-time messaging, web servers, and microservices.
Prefer Learning by Watching?
Watch these YouTube tutorials to understand NODEJS Tutorial visually:
What You'll Learn:
- 📌 Node.js Tutorial - 21 - Events Module
- 📌 NodeJS Tutorial 12: Introduction To Events