class TaskQueue {
constructor() {
this.queue = [];
this.isProcessing = false;
}
enqueue(task) {
// Add a task to the queue
this.queue.push(task);
this.processQueue();
}
processQueue() {
if (this.isProcessing) return; // Prevent multiple processing
if (this.queue.length === 0) return; // Queue is empty
this.isProcessing = true;
const task = this.queue.shift(); // Get the first task
try {
task(); // Execute the task
} catch (error) {
console.error("Error processing task:", error);
} finally {
this.isProcessing = false; // Mark as not processing
//Check if there are more tasks
if (this.queue.length > 0) {
setTimeout(() => this.processQueue(), 0); // Process next task immediately
}
}
}
}
// Example Usage:
const taskQueue = new TaskQueue();
// Define some simple tasks
const fixRecord1 = () => { console.log("Fixing record 1"); };
const fixRecord2 = () => { console.log("Fixing record 2"); };
const fixRecord3 = () => { console.log("Fixing record 3"); };
// Enqueue the tasks
taskQueue.enqueue(fixRecord1);
taskQueue.enqueue(fixRecord2);
taskQueue.enqueue(fixRecord3);
Add your comment