UNPKG

hpg-r3f-model-scene

Version:

Pretty Footer react component used in ant.design

75 lines 1.95 kB
import _typeof from "@babel/runtime/helpers/esm/typeof"; import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck"; import _createClass from "@babel/runtime/helpers/esm/createClass"; import { pull } from 'lodash'; /*这个就是事件的原型*/ var EventEmitter = /*#__PURE__*/function () { function EventEmitter() { _classCallCheck(this, EventEmitter); this._events = void 0; this._events = {}; } _createClass(EventEmitter, [{ key: "_getFns", value: function _getFns(event) { return this._events[event] || (this._events[event] = []); } }, { key: "on", value: function on(event, cb) { var fns = this._getFns(event); fns.push(cb); } }, { key: "off", value: function off(event, cb) { if (cb) { var fns = this._getFns(event); pull(fns, cb); } else { delete this._events[event]; } } }, { key: "once", value: function once(event, cb) { var _this = this; var fn2 = function fn2(e) { _this.off(event, fn2); cb(e); }; this.on(event, fn2); } /* 同步调用 */ }, { key: "emit", value: function emit(event, param) { var fns = this._getFns(event); for (var i = 0; i < fns.length; i++) { var fn = fns[i]; fn(param); } } /* 可以异步调用,返回一个Promise */ }, { key: "invoke", value: function invoke(event, param) { var fns = this._getFns(event); var _loop = function _loop() { var fn = fns[i]; return { v: new Promise(function (resolve, reject) { resolve(fn(param)); }) }; }; flag: for (var i = 0; i < fns.length; i++) { var _ret = _loop(); if (_typeof(_ret) === "object") return _ret.v; } return Promise.reject(); } }]); return EventEmitter; }(); export default EventEmitter;