12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
- var _promiseUtils = require("./promiseUtils");
- var TaskQueue = function () {
- function TaskQueue() {
- (0, _classCallCheck2.default)(this, TaskQueue);
- this.queue = [];
- }
- (0, _createClass2.default)(TaskQueue, [{
- key: "enqueue",
- value: function (task) {
- var _this = this;
- var taskComplete = new _promiseUtils.resolvingPromise();
- this.queue.push({
- task: task,
- _completion: taskComplete
- });
- if (this.queue.length === 1) {
- task().then(function () {
- _this._dequeue();
- taskComplete.resolve();
- }, function (error) {
- _this._dequeue();
- taskComplete.reject(error);
- });
- }
- return taskComplete;
- }
- }, {
- key: "_dequeue",
- value: function () {
- var _this2 = this;
- this.queue.shift();
- if (this.queue.length) {
- var next = this.queue[0];
- next.task().then(function () {
- _this2._dequeue();
- next._completion.resolve();
- }, function (error) {
- _this2._dequeue();
- next._completion.reject(error);
- });
- }
- }
- }]);
- return TaskQueue;
- }();
- module.exports = TaskQueue;
|