EventEmitter is the foundation of Node.js event-driven architecture. Here's how to use it effectively.
Basic Usage
Loading code block...
Custom EventEmitter Class
Loading code block...
TypeScript Typed Events
Loading code block...
Error Handling
Loading code block...
Async Iteration
Loading code block...
Event Namespacing
Loading code block...
Pub/Sub Pattern
Loading code block...
Event Queuing
Loading code block...
Memory Management
Loading code block...
Real-World Example: File Watcher
Loading code block...
Best Practices
Design:
✓ Always handle 'error' events
✓ Use typed events in TypeScript
✓ Document event signatures
✓ Clean up listeners when done
Performance:
✓ Remove listeners when not needed
✓ Set appropriate max listeners
✓ Use once() for one-time events
✓ Avoid synchronous operations in handlers
Patterns:
✓ Emit events for state changes
✓ Use namespaced events for organization
✓ Return unsubscribe functions
✓ Consider async iteration for streams
Conclusion
EventEmitter enables loose coupling and async communication in Node.js. Use typed events for safety, handle errors properly, and clean up listeners to prevent memory leaks. It's ideal for building modular, event-driven architectures.