@uni/toast
Version:
[](https://www.npmjs.com/package/@uni/toast)
83 lines (69 loc) • 2.67 kB
JavaScript
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
var Events = /*#__PURE__*/function () {
function Events() {
this.events = void 0;
this.events = {};
}
var _proto = Events.prototype;
_proto.emit = function emit(key, params) {
var _this = this;
if (this.events[key] && this.events[key].size > 0) {
var _queue = new Set(Array.from(this.events[key]));
_queue.forEach( /*#__PURE__*/function () {
var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(item) {
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
item.handler(params);
if (item.once) {
_this.events[key].delete(item);
}
case 2:
case "end":
return _context.stop();
}
}
}, _callee);
}));
return function (_x) {
return _ref.apply(this, arguments);
};
}());
}
} // async _emit(key: string, params: any) {
// if (this.events[key] && this.events[key].length > 0) {
// const item = this.events[key].shift();
// if (isAsync(item)) {
// await item(params);
// } else {
// item(params);
// }
// this.emit(key, params);
// }
// }
;
_proto.once = function once(key, cb) {
var item = {
once: true,
handler: cb
};
this.events[key] ? this.events[key].add(item) : this.events[key] = new Set([item]); // return () => {
// this.events[key].delete(item);
// };
};
_proto.register = function register(key, cb) {
var _this2 = this;
var item = {
once: false,
handler: cb
};
this.events[key] ? this.events[key].add(item) : this.events[key] = new Set([item]);
return function () {
_this2.events[key].delete(item);
};
};
return Events;
}();
export { Events as default };