This commit is contained in:
Daniel Imms
2022-09-24 11:17:39 -07:00
parent c42f290eb8
commit 270ac1c7d9
+11
View File
@@ -3,16 +3,27 @@
* @license MIT
*/
/**
* A queue of that runs tasks over several idle callbacks, trying to maintain the specified
* frame rate. The tasks will run in the order they are enqueued, but they will run some time later,
* and care should be taken to ensure they're non-urgent and will not introduce race conditions.
*/
export class IdleTaskQueue {
private _tasks: Function[] = [];
private _idleCallback?: number;
private _maxTaskDuration: number;
private _i = 0;
/**
* @param targetFps The target frame rate.
*/
constructor(targetFps: number = 240) {
this._maxTaskDuration = 1000 / targetFps;
}
/**
* Adds a task to the queue which will run in a future idle callback.
*/
public enqueue(task: Function): void {
this._tasks.push(task);
this._start();