1. class TaskQueue {
  2. constructor() {
  3. this.queue = [];
  4. this.isProcessing = false;
  5. }
  6. enqueue(task) {
  7. // Add a task to the queue
  8. this.queue.push(task);
  9. this.processQueue();
  10. }
  11. processQueue() {
  12. if (this.isProcessing) return; // Prevent multiple processing
  13. if (this.queue.length === 0) return; // Queue is empty
  14. this.isProcessing = true;
  15. const task = this.queue.shift(); // Get the first task
  16. try {
  17. task(); // Execute the task
  18. } catch (error) {
  19. console.error("Error processing task:", error);
  20. } finally {
  21. this.isProcessing = false; // Mark as not processing
  22. //Check if there are more tasks
  23. if (this.queue.length > 0) {
  24. setTimeout(() => this.processQueue(), 0); // Process next task immediately
  25. }
  26. }
  27. }
  28. }
  29. // Example Usage:
  30. const taskQueue = new TaskQueue();
  31. // Define some simple tasks
  32. const fixRecord1 = () => { console.log("Fixing record 1"); };
  33. const fixRecord2 = () => { console.log("Fixing record 2"); };
  34. const fixRecord3 = () => { console.log("Fixing record 3"); };
  35. // Enqueue the tasks
  36. taskQueue.enqueue(fixRecord1);
  37. taskQueue.enqueue(fixRecord2);
  38. taskQueue.enqueue(fixRecord3);

Add your comment