UNPKG

gaea-render

Version:
78 lines (65 loc) 1.76 kB
"use strict"; 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;