UNPKG

hpg-r3f-model-scene

Version:

Pretty Footer react component used in ant.design

83 lines (82 loc) 2.29 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _lodash = require("lodash"); /*这个就是事件的原型*/ var EventEmitter = /*#__PURE__*/function () { function EventEmitter() { (0, _classCallCheck2.default)(this, EventEmitter); this._events = void 0; this._events = {}; } (0, _createClass2.default)(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); (0, _lodash.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 ((0, _typeof2.default)(_ret) === "object") return _ret.v; } return Promise.reject(); } }]); return EventEmitter; }(); var _default = EventEmitter; exports.default = _default;