UNPKG

811 BJavaScriptView Raw
1
2const EVENTS = {};
3
4export default {
5
6 get events () { return EVENTS; },
7
8 on (name, method) {
9
10 if (!(name in this.events)) {
11 this.events[name] = [];
12 }
13
14 this.events[name].push(method);
15 },
16
17 off (name, method) {
18
19 if (name in this.events) {
20
21 let index = this.events[name].indexOf(method);
22
23 if (index !== -1) {
24 this.events[name].splice(index, 1);
25 }
26
27 }
28
29 },
30
31 emit (name) {
32
33 if (name in this.events) {
34
35 const methods = this.events[name];
36 const args = Array.prototype.slice.call(arguments, 2);
37
38 Promise.all(methods.map(function (method) {
39 return method.apply(this, args);
40 })).catch(console.error);
41
42 }
43
44 }
45
46};