Skip to content

Commit 119e0b7

Browse files
committed
Add EventEmitter examples
1 parent a85bff8 commit 119e0b7

2 files changed

Lines changed: 36 additions & 0 deletions

File tree

‎JavaScript/2-emitter.js‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
'use strict';
2+
3+
const EventEmitter = require('node:events');
4+
5+
const emitter = new EventEmitter();
6+
7+
emitter.on('name', (data) => {
8+
console.dir({ data });
9+
});
10+
11+
emitter.emit('name', { a: 5 });

‎JavaScript/3-naive.js‎

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
'use strict';
2+
3+
class EventEmitter {
4+
events = {};
5+
6+
on(name, fn) {
7+
const event = this.events[name];
8+
if (event) event.push(fn);
9+
else this.events[name] = [fn];
10+
}
11+
12+
emit(name, ...data) {
13+
const event = this.events[name];
14+
if (!event) return;
15+
for (const listener of event) listener(...data);
16+
}
17+
}
18+
19+
const emitter = new EventEmitter();
20+
21+
emitter.on('name', (data) => {
22+
console.dir({ data });
23+
});
24+
25+
emitter.emit('name', { a: 5 });

0 commit comments

Comments
 (0)