UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

64 lines (60 loc) 1.75 kB
/** * DevExtreme (cjs/__internal/core/utils/m_queue.js) * Version: 24.2.6 * Build date: Mon Mar 17 2025 * * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/ */ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.create = createQueue; exports.enqueue = void 0; var _errors = _interopRequireDefault(require("../../../core/errors")); var _deferred = require("../../../core/utils/deferred"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } function createQueue(discardPendingTasks) { let _tasks = []; let _busy = false; function exec() { while (_tasks.length) { _busy = true; const task = _tasks.shift(); const result = task(); if (void 0 === result) { continue } if (result.then) { (0, _deferred.when)(result).always(exec); return } throw _errors.default.Error("E0015") } _busy = false } return { add: function(task, removeTaskCallback) { if (!discardPendingTasks) { _tasks.push(task) } else { if (_tasks[0] && removeTaskCallback) { removeTaskCallback(_tasks[0]) } _tasks = [task] } if (!_busy) { exec() } }, busy: function() { return _busy } } } const enqueue = exports.enqueue = createQueue().add;