EventEmitter is the foundation of event-driven architecture in Node.js. Here's how to use it.
Basic Usage
Loading code block...
Event Methods
Loading code block...
Extending EventEmitter
Loading code block...
Error Handling
Loading code block...
Async Events
Loading code block...
Event Patterns
Loading code block...
Configuration
Loading code block...
Memory Management
Loading code block...
Real-World Examples
Loading code block...
Best Practices
Event Design:
✓ Use descriptive event names
✓ Document event signatures
✓ Emit errors as 'error' event
✓ Keep payloads serializable
Memory:
✓ Remove listeners when done
✓ Use once() for one-time events
✓ Set appropriate maxListeners
✓ Clean up in stop/destroy
Patterns:
✓ Extend EventEmitter for OOP
✓ Use event bus for decoupling
✓ Promisify with once()
✓ Handle errors consistently
Avoid:
✗ Too many listeners per event
✗ Forgetting to clean up
✗ Synchronous heavy work in handlers
✗ Circular event emissions
Conclusion
EventEmitter enables powerful event-driven patterns in Node.js. Extend it for custom classes, use proper error handling, and clean up listeners to prevent memory leaks. The once() method and promisified events work well with async/await patterns.