typegpu
Version:
A thin layer between JS and WebGPU/WGSL that improves development experience and allows for faster iteration.
31 lines (30 loc) • 731 B
JavaScript
export class TaskQueue {
_queue = [];
_pending = false;
enqueue(task) {
return new Promise((resolve, reject) => {
this._queue.push(async () => {
try {
resolve(await task());
}
catch (e) {
reject(e);
}
});
void this._processQueue();
});
}
async _processQueue() {
if (this._pending) {
return;
}
this._pending = true;
while (this._queue.length > 0) {
const task = this._queue.shift();
if (task) {
await task();
}
}
this._pending = false;
}
}