Skip to content

delay ​

Delays code execution for a specified amount of time.

typescript
await delay(ms, options?);

Reference ​

delay(ms, options?) ​

Use delay when you want to pause code execution for a specific amount of time. You can use it with async/await to make the next code execute after a certain time. If needed, you can also cancel the delay through an AbortSignal.

typescript
import { delay } from 'es-toolkit/promise';

async function example() {
  console.log('Start');
  await delay(1000); // Delays execution for 1 second
  console.log('Executed after 1 second');

  await delay(500); // Delays for an additional 0.5 seconds
  console.log('Executed after an additional 0.5 seconds');
}

example();

You can also cancel the delay using AbortSignal:

typescript
async function cancellableDelay() {
  const controller = new AbortController();
  const { signal } = controller;

  // Cancel the delay after 50ms
  setTimeout(() => controller.abort(), 50);

  try {
    await delay(1000, { signal });
    console.log('1 second has passed'); // This code won't execute
  } catch (error) {
    console.log('Delay was cancelled'); // AbortError is thrown
  }
}

It's also useful for simulating asynchronous behavior in tests.

typescript
async function simulateNetworkRequest() {
  console.log('Starting network request...');
  await delay(2000); // Simulates a 2-second network delay
  console.log('Response received!');
  return { data: 'test' };
}

Parameters ​

  • ms (number): The amount of time to delay in milliseconds.
  • options (DelayOptions, optional): Delay options.
    • signal (AbortSignal, optional): An AbortSignal to cancel the delay.

Returns ​

(Promise<void>): Returns a Promise that completes after the specified time.

Errors ​

Throws AbortError when the AbortSignal is activated.

Released under the MIT License.