miniapp-web-jsapi
Version:
JSAPI/View adapter for miniprogram running on the web
58 lines • 2.15 kB
JavaScript
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
import _createClass from "@babel/runtime/helpers/createClass";
import _defineProperty from "@babel/runtime/helpers/defineProperty";
var EventManager = /*#__PURE__*/function () {
function EventManager(managerName) {
_classCallCheck(this, EventManager);
_defineProperty(this, "managerName", void 0);
_defineProperty(this, "listenersMap", {});
this.managerName = managerName;
}
_createClass(EventManager, [{
key: "addListener",
value: function addListener(eventName, listener) {
var _this = this;
console.log("EventManager_".concat(this.managerName, "#addListener: ").concat(eventName));
var listeners = this.listenersMap[eventName];
if (!listeners) {
listeners = [];
this.listenersMap[eventName] = listeners;
}
listeners.push(listener);
return function () {
_this.removeListener(eventName, listener);
};
}
}, {
key: "removeListener",
value: function removeListener(eventName, listener) {
console.log("EventManager_".concat(this.managerName, "#removeListener: ").concat(eventName));
if (!listener) {
this.listenersMap[eventName] = [];
return;
}
var listeners = this.listenersMap[eventName];
if (listeners) {
this.listenersMap[eventName] = listeners.filter(function (item) {
return item !== listener;
});
}
}
}, {
key: "notifyEvent",
value: function notifyEvent(eventName, params) {
console.log("EventManager_".concat(this.managerName, "#notifyEvent: ").concat(eventName, " -> "), params);
var listeners = this.listenersMap[eventName];
if (listeners) {
// 复制一份防止遍历中同时 remove
_toConsumableArray(listeners).forEach(function (listener) {
return listener(params, eventName);
});
}
}
}]);
return EventManager;
}();
var defaultEventManager = new EventManager('default');
export { defaultEventManager, EventManager };