Exercise 20: Cancelable Promise

Problem Statement

Function `createCancelable(promise)` banao jo cancelable promise return kare. Example: const {promise, cancel} = createCancelable(fetchAPI()); cancel()

Sample Output:

const {promise, cancel} = createCancelable(fetchAPI());
cancel(); await promise => rejects with "Cancelled"

Solution

const createCancelable = (promise) => {
  let cancelled = false;
  const wrapped = new Promise((resolve, reject) => {
    promise.then(val => cancelled ? reject(new Error("Cancelled")) : resolve(val),
      err => cancelled ? reject(new Error("Cancelled")) : reject(err));
  });
  return {promise: wrapped, cancel: () => { cancelled = true; }};
};

Explanation

Overall Goal:

  • Cancelable promise create karna.

Real world:

  • Request cancellation: cancel API calls.
  • User actions: cancel operations.