第一次提交
This commit is contained in:
98
common/onfire.js
Normal file
98
common/onfire.js
Normal file
@ -0,0 +1,98 @@
|
||||
"use strict";
|
||||
/**
|
||||
* mini (~300 b) version for event-emitter.
|
||||
*/
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
/**
|
||||
* const ee = new OnFire();
|
||||
*
|
||||
* ee.on('click', () => {});
|
||||
*
|
||||
* ee.on('mouseover', () => {});
|
||||
*
|
||||
* ee.emit('click', 1, 2, 3);
|
||||
* ee.fire('mouseover', {}); // same with emit
|
||||
*
|
||||
* ee.off();
|
||||
*/
|
||||
|
||||
var OnFire =
|
||||
/** @class */
|
||||
function () {
|
||||
function OnFire() {
|
||||
// 所有事件的监听器
|
||||
this.es = {}; // cname of fire
|
||||
|
||||
this.emit = this.fire;
|
||||
}
|
||||
|
||||
OnFire.prototype.on = function (eventName, cb, once) {
|
||||
if (once === void 0) {
|
||||
once = false;
|
||||
}
|
||||
|
||||
if (!this.es[eventName]) {
|
||||
this.es[eventName] = [];
|
||||
}
|
||||
|
||||
this.es[eventName].push({
|
||||
cb: cb,
|
||||
once: once
|
||||
});
|
||||
};
|
||||
|
||||
OnFire.prototype.once = function (eventName, cb) {
|
||||
this.on(eventName, cb, true);
|
||||
};
|
||||
|
||||
OnFire.prototype.fire = function (eventName) {
|
||||
var params = [];
|
||||
|
||||
for (var _i = 1; _i < arguments.length; _i++) {
|
||||
params[_i - 1] = arguments[_i];
|
||||
}
|
||||
|
||||
var listeners = this.es[eventName] || [];
|
||||
|
||||
for (var i = 0; i < listeners.length; i++) {
|
||||
var _a = listeners[i],
|
||||
cb = _a.cb,
|
||||
once = _a.once;
|
||||
cb.apply(this, params);
|
||||
|
||||
if (once) {
|
||||
listeners.splice(i, 1);
|
||||
i--;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
OnFire.prototype.off = function (eventName, cb) {
|
||||
// clean all
|
||||
if (eventName === undefined) {
|
||||
this.es = {};
|
||||
} else {
|
||||
if (cb === undefined) {
|
||||
// clean the eventName's listeners
|
||||
delete this.es[eventName];
|
||||
} else {
|
||||
var listeners = this.es[eventName] || []; // clean the event and listener
|
||||
|
||||
for (var i = 0; i < listeners.length; i++) {
|
||||
if (listeners[i].cb === cb) {
|
||||
listeners.splice(i, 1);
|
||||
i--;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
OnFire.ver = "2.0.0";
|
||||
return OnFire;
|
||||
}();
|
||||
|
||||
exports.default = OnFire;
|
||||
Reference in New Issue
Block a user