gaea-render
Version:
78 lines (65 loc) • 1.76 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
Object.defineProperty(exports, "__esModule", {
value: true
});
var EventAction =
/*#__PURE__*/
function () {
function EventAction() {
(0, _classCallCheck2.default)(this, EventAction);
// 所有事件
this.events = new Map();
}
/**
* 订阅事件
*/
(0, _createClass2.default)(EventAction, [{
key: "on",
value: function on(eventType, callback, context) {
var event = {
callback: callback,
context: context
};
if (this.events.get(eventType)) {
// 存在, push 一个事件监听
this.events.get(eventType).push(event);
} else {
// 不存在, 赋值
this.events.set(eventType, [event]);
}
}
/**
* 取消订阅
*/
}, {
key: "off",
value: function off(eventType, callback) {
if (!this.events.get(eventType)) {
return false;
}
var events = this.events.get(eventType).filter(function (event) {
return event.callback !== callback;
});
this.events.set(eventType, events);
return true;
}
/**
* 广播事件
*/
}, {
key: "emit",
value: function emit(eventType, context) {
if (!eventType || !this.events.get(eventType)) {
return false;
}
this.events.get(eventType).forEach(function (event) {
event.callback(event.context, context);
});
}
}]);
return EventAction;
}();
exports.default = EventAction;
;