0 day streak
javascript / intermediate
Snippet

Decoupling Logic with EventEmitters

EventEmitters enable an event-driven architecture where components can react to actions without being tightly coupled to the logic that triggered them.

snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
const EventEmitter = require('node:events');
const eventBus = new EventEmitter();
// Observer 1: Logging
eventBus.on('user_signup', (user) => console.log(`Log: New user ${user.email}`));
// Observer 2: Email logic
eventBus.on('user_signup', (user) => sendWelcomeEmail(user));
function registerUser(data) {
// ... logic ...
eventBus.emit('user_signup', data);
}
nodejs
Breakdown
1
eventBus.on('user_signup', ...)
Subscribes a listener to a specific event name. Multiple listeners can be attached to one event.
2
eventBus.emit('user_signup', data)
Triggers the event and passes the data payload to all registered listeners synchronously.