UNPKG

@uni/toast

Version:

[![npm](https://img.shields.io/npm/v/@uni/toast.svg)](https://www.npmjs.com/package/@uni/toast)

83 lines (69 loc) 2.67 kB
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 };