|
|
@@ -1,25 +1,13 @@ |
|
|
|
module.exports = { |
|
|
|
events: {}, |
|
|
|
queue: [], |
|
|
|
|
|
|
|
on: function (event, callback) { |
|
|
|
let list = this.events[event] || (this.events[event] = []); |
|
|
|
list.push(callback); |
|
|
|
|
|
|
|
for (let i = 0; i < this.queue.length; i++) { |
|
|
|
let q = this.queue[i]; |
|
|
|
if (q.event !== event) |
|
|
|
continue; |
|
|
|
|
|
|
|
this.queue.splice(i, 1); |
|
|
|
i--; |
|
|
|
|
|
|
|
q.args.splice(0, 0, event); |
|
|
|
|
|
|
|
this.emit.apply(this, q.args); |
|
|
|
} |
|
|
|
|
|
|
|
return callback; |
|
|
|
}, |
|
|
|
|
|
|
|
off: function (event, callback) { |
|
|
|
let list = this.events[event] || []; |
|
|
|
let lLen = list.length; |
|
|
@@ -34,18 +22,13 @@ module.exports = { |
|
|
|
if (lLen === 0) |
|
|
|
delete this.events[event]; |
|
|
|
}, |
|
|
|
|
|
|
|
emit: function (event) { |
|
|
|
let args = [].slice.call(arguments, 1); |
|
|
|
|
|
|
|
let list = this.events[event]; |
|
|
|
if (!list) { |
|
|
|
this.queue.push({ |
|
|
|
event: event, |
|
|
|
args: args |
|
|
|
}); |
|
|
|
|
|
|
|
if (!list) |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
let len = list.length; |
|
|
|
for (let i = 0; i < len; i++) { |
|
|
|