Skip to content

Commit 897609a

Browse files
committed
Multiple methods fp example
1 parent df57a25 commit 897609a

1 file changed

Lines changed: 56 additions & 0 deletions

File tree

JavaScript/examples/8-methods.js

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
'use strict';
2+
3+
const emitter = (l = {}, o) => (o = {
4+
on: (n, f) => (l[n] = l[n] || []).push(f),
5+
emit: (n, d) => (l[n] || []).map(f => f(d)),
6+
once: (n, f, g) => o.on(n, g = (...a) => (f(...a), o.remove(n, g))),
7+
remove: (n, f, e = l[n] || []) => e.splice(e.indexOf(f), 1),
8+
clear: (n) => (n ? l[n] = [] : l = {}),
9+
count: (n) => (l[n] || []).length
10+
});
11+
12+
// Usage
13+
14+
const ee = emitter();
15+
16+
// on and emit
17+
18+
ee.on('e1', (data) => {
19+
console.dir(data);
20+
});
21+
22+
ee.emit('e1', { msg: 'e1 ok' });
23+
24+
// once
25+
26+
ee.once('e2', (data) => {
27+
console.dir(data);
28+
});
29+
30+
ee.emit('e2', { msg: 'e2 ok' });
31+
ee.emit('e2', { msg: 'e2 not ok' });
32+
33+
// remove
34+
35+
const f3 = (data) => {
36+
console.dir(data);
37+
};
38+
39+
ee.on('e3', f3);
40+
ee.remove('e3', f3);
41+
ee.emit('e3', { msg: 'e3 not ok' });
42+
43+
// count
44+
45+
ee.on('e4', () => {});
46+
ee.on('e4', () => {});
47+
console.log('e4 count', ee.count('e4'));
48+
49+
// clear
50+
51+
ee.clear('e4');
52+
ee.emit('e4', { msg: 'e4 not ok' });
53+
ee.emit('e1', { msg: 'e1 ok' });
54+
55+
ee.clear();
56+
ee.emit('e1', { msg: 'e1 not ok' });

0 commit comments

Comments
 (0)