decord/source/360_TaskQueue.js
2026-07-21 22:01:30 +00:00

128 lines
3.5 KiB
JavaScript

// Module ID: 360
// Function ID: 5337
// Name: TaskQueue
// Dependencies: []
// Module 360 (TaskQueue)
let closure_2 = importDefault(dependencyMap[0]);
let closure_3 = importDefault(dependencyMap[1]);
export default () => {
class TaskQueue {
constructor(arg0) {
tmp = closure_2(this, TaskQueue);
this._onMoreTasks = arg0.onMoreTasks;
items = [];
items[0] = { tasks: [], popable: false };
this._queueStack = items;
return;
}
}
const arg1 = TaskQueue;
let obj = {
key: "enqueue",
value: function enqueue(arg0) {
this._getCurrentQueue().push(arg0);
}
};
const items = [obj, , , , , , ];
obj = {
key: "enqueueTasks",
value: function enqueueTasks(closure_1) {
const TaskQueue = this;
const item = closure_1.forEach((arg0) => self.enqueue(arg0));
}
};
items[1] = obj;
obj = {
key: "cancelTasks",
value: function cancelTasks(closure_1) {
const TaskQueue = closure_1;
const _queueStack = this._queueStack;
const mapped = _queueStack.map((tasks) => {
tasks = tasks.tasks;
return Object.assign({}, tasks, { tasks: tasks.filter((arg0) => -1 === closure_0.indexOf(arg0)) });
});
this._queueStack = mapped.filter((tasks) => {
let tmp = tasks.tasks.length > 0;
if (!tmp) {
tmp = 0 === arg1;
}
return tmp;
});
}
};
items[2] = obj;
items[3] = {
key: "hasTasksToProcess",
value: function hasTasksToProcess() {
return this._getCurrentQueue().length > 0;
}
};
items[4] = {
key: "processNext",
value: function processNext() {
const self = this;
const _getCurrentQueueResult = this._getCurrentQueue();
if (_getCurrentQueueResult.length) {
const arr = _getCurrentQueueResult.shift();
if ("object" === typeof arr) {
if (arr.gen) {
self._genPromise(arr);
}
}
if ("object" === typeof arr) {
if (arr.run) {
arr.run();
}
}
const _JSON = JSON;
TaskQueue(closure_1[2])("function" === typeof arr, `Expected Function, SimpleTask, or PromiseTask, but got:
${JSON.stringify(obj, null, 2)}`);
arr();
const tmp8 = TaskQueue(closure_1[2]);
}
}
};
items[5] = {
key: "_getCurrentQueue",
value: function _getCurrentQueue() {
const self = this;
const tmp = this._queueStack[this._queueStack.length - 1];
if (tmp.popable) {
if (0 === tmp.tasks.length) {
if (self._queueStack.length > 1) {
const _queueStack = self._queueStack;
_queueStack.pop();
let tasks = self._getCurrentQueue();
}
return tasks;
}
}
tasks = tmp.tasks;
}
};
items[6] = {
key: "_genPromise",
value: function _genPromise(arr) {
const TaskQueue = arr;
const self = this;
const _queueStack = this._queueStack;
_queueStack.push({ tasks: [], popable: false });
let closure_2 = this._queueStack[this._queueStack.length - 1];
const genResult = arr.gen();
arr.gen().then(() => {
closure_2.popable = true;
if (self.hasTasksToProcess()) {
self._onMoreTasks();
}
}).catch((arg0) => {
const timerId = setTimeout((self) => {
self.message = "TaskQueue: Error resolving Promise in task " + self.name + ": " + self.message;
throw self;
}, 0);
});
}
};
return callback(TaskQueue, items);
}();