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.