Exercise 11: Promise Queue (sequential processing)

Problem Statement

Function `createQueue()` banao jo promises ko queue me add kare aur sequentially process kare. Example: queue.add(() => fetchAPI1()); queue.add(() => fetchAPI2());

Sample Output:

const queue = createQueue();
queue.add(() => fetchAPI1()); queue.add(() => fetchAPI2());
// Processes sequentially

Solution

const createQueue = () => {
  let processing = false;
  const queue = [];
  const process = async () => {
    if (processing || queue.length === 0) return;
    processing = true;
    const fn = queue.shift();
    await fn();
    processing = false;
    process();
  };
  return {add: (fn) => { queue.push(fn); process(); }};
};

Explanation

Overall Goal:

  • Promises ko sequentially process karna via queue.

Real world:

  • Request queue: sequential API calls.
  • Task queue: ordered processing.