UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

51 lines (49 loc) 2.25 kB
/** * DevExtreme (cjs/__internal/scheduler/utils/macro_task_array/methods.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.macroTaskArrayMap = exports.macroTaskArrayForEach = exports.DEFAULT_STEPS_VALUE = exports.DEFAULT_MACRO_TASK_TIMEOUT = void 0; var _dispatcher = _interopRequireDefault(require("./dispatcher")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const DEFAULT_STEPS_VALUE = exports.DEFAULT_STEPS_VALUE = 100; const DEFAULT_MACRO_TASK_TIMEOUT = exports.DEFAULT_MACRO_TASK_TIMEOUT = 0; const macroTaskArrayForEach = async function(array, callback) { let step = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : DEFAULT_STEPS_VALUE; let macroTaskTimeoutMs = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : DEFAULT_MACRO_TASK_TIMEOUT; const promises = []; const batchesCount = Math.ceil(array.length / step); for (let batchIdx = 0; batchIdx < batchesCount; batchIdx += 1) { const scheduledTask = _dispatcher.default.schedule((() => { const startIdx = batchIdx * step; const maxIdx = startIdx + step; for (let idx = startIdx; idx < maxIdx && void 0 !== array[idx]; idx += 1) { callback(array[idx]) } }), macroTaskTimeoutMs); promises.push(scheduledTask) } await Promise.all(promises) }; exports.macroTaskArrayForEach = macroTaskArrayForEach; const macroTaskArrayMap = async function(array, callback) { let step = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : DEFAULT_STEPS_VALUE; let macroTaskTimeoutMs = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : DEFAULT_MACRO_TASK_TIMEOUT; const result = []; await macroTaskArrayForEach(array, (item => { result.push(callback(item)) }), step, macroTaskTimeoutMs); return result }; exports.macroTaskArrayMap = macroTaskArrayMap;