Developer Toolkit

Sleep / Delay Generator

Generate a Promise-based sleep(ms) utility for async/await delays, with cancellation support and example usage.

Controls

Function name

Default delay (ms)

Live preview

Try a delay (ms, max 10000)

Run the delay to see the timing log.

Generated JavaScript

export function sleep(ms = 1000, signal) {
  return new Promise((resolve, reject) => {
    if (signal?.aborted) return reject(signal.reason ?? new Error("Aborted"));

    const timer = setTimeout(() => {
      signal?.removeEventListener("abort", onAbort);
      resolve();
    }, ms);

    function onAbort() {
      clearTimeout(timer);
      reject(signal.reason ?? new Error("Aborted"));
    }

    signal?.addEventListener("abort", onAbort, { once: true });
  });
}

// Example usage
async function loadWithDelay() {
  console.log("loading...");
  await sleep(1000);
  console.log("done after 1000ms");
}

// Cancel a pending delay
const controller = new AbortController();
sleep(5000, controller.signal).catch((err) => console.log(err.message));
controller.abort();