-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest-singleton-async.js
More file actions
28 lines (20 loc) · 904 Bytes
/
Copy pathtest-singleton-async.js
File metadata and controls
28 lines (20 loc) · 904 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
const singletonAsync = require('./singleton-async.js');
const EventEmitter = require('events');
const myEmitter = new EventEmitter();
const asyncAction = (a) => new Promise((resolve, reject) => {
setTimeout(() => { console.log('asyncAction returns:', a);
resolve(a);
}, 1000);
})
const getAsyncData = (a) => asyncAction(a).then((aa) => console.log('getAsyncData returns', aa)).catch(() => console.log('error'))
// const getAsyncData = (a) => asyncAction(a)
myEmitter.on('event', singletonAsync(getAsyncData));
myEmitter.emit('event', 'a');
myEmitter.emit('event', 'b');
myEmitter.emit('event', 'c');
myEmitter.emit('event', 'a1');
myEmitter.emit('event', 'b1');
myEmitter.emit('event', 'c1');
setTimeout(() => myEmitter.emit('event', 'd'), 1001)
setTimeout(() => myEmitter.emit('event', 'e'), 2000)
setTimeout(() => myEmitter.emit('event', 'f'), 3000)