UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

48 lines (47 loc) 1.81 kB
/** * DevExtreme (cjs/__internal/core/m_postponed_operations.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.PostponedOperations = void 0; var _deferred = require("../../core/utils/deferred"); var _type = require("../../core/utils/type"); class PostponedOperations { constructor() { this._postponedOperations = {} } add(key, fn, postponedPromise) { if (key in this._postponedOperations) { postponedPromise && this._postponedOperations[key].promises.push(postponedPromise) } else { const completePromise = new _deferred.Deferred; this._postponedOperations[key] = { fn: fn, completePromise: completePromise, promises: postponedPromise ? [postponedPromise] : [] } } return this._postponedOperations[key].completePromise.promise() } callPostponedOperations() { for (const key in this._postponedOperations) { const operation = this._postponedOperations[key]; if ((0, _type.isDefined)(operation)) { if (operation.promises && operation.promises.length) { (0, _deferred.when)(...operation.promises).done(operation.fn).then(operation.completePromise.resolve) } else { operation.fn().done(operation.completePromise.resolve) } } } this._postponedOperations = {} } } exports.PostponedOperations = PostponedOperations;