UNPKG

choerodon-ui

Version:

An enterprise-class UI design language and React-based implementation

122 lines (98 loc) 3.17 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _tslib = require("tslib"); var _mobx = require("mobx"); var PromiseQueue = /*#__PURE__*/ function () { function PromiseQueue() { var _this = this; (0, _classCallCheck2["default"])(this, PromiseQueue); this.queueing = false; (0, _mobx.runInAction)(function () { _this.queue = []; }); } (0, _createClass2["default"])(PromiseQueue, [{ key: "clear", value: function clear(promise) { if (!this.queueing) { var queue = this.queue; var index = queue.indexOf(promise); if (index !== -1) { queue.splice(index, 1); } } } }, { key: "add", value: function add(promise) { var _this2 = this; var queue = this.queue; queue.push(promise); return promise.then(function (value) { _this2.clear(promise); return value; })["catch"](function (error) { _this2.clear(promise); throw error; }); } }, { key: "ready", value: function () { var _ready = (0, _asyncToGenerator2["default"])( /*#__PURE__*/ _regenerator["default"].mark(function _callee() { var queue; return _regenerator["default"].wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: this.queueing = true; queue = this.queue; if (!queue.length) { _context.next = 6; break; } _context.next = 5; return queue.pop(); case 5: return _context.abrupt("return", this.ready()); case 6: this.queueing = false; return _context.abrupt("return", Promise.resolve()); case 8: case "end": return _context.stop(); } } }, _callee, this); })); function ready() { return _ready.apply(this, arguments); } return ready; }() }, { key: "length", get: function get() { return this.queue.length; } }]); return PromiseQueue; }(); exports["default"] = PromiseQueue; (0, _tslib.__decorate)([_mobx.observable], PromiseQueue.prototype, "queue", void 0); (0, _tslib.__decorate)([_mobx.action], PromiseQueue.prototype, "clear", null); (0, _tslib.__decorate)([_mobx.action], PromiseQueue.prototype, "add", null); (0, _tslib.__decorate)([_mobx.action], PromiseQueue.prototype, "ready", null); //# sourceMappingURL=PromiseQueue.js.map