Skip to content

delay

延迟代码执行指定的时间。

typescript
await delay(ms, options?);

参考

delay(ms, options?)

当您想要暂停代码执行一定时间时,可以使用 delay。它可以与 async/await 一起使用,使下一段代码在一定时间后执行。如有必要,还可以通过 AbortSignal 取消延迟。

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

async function example() {
  console.log('开始');
  await delay(1000); // 延迟执行 1 秒
  console.log('1秒后执行');

  await delay(500); // 再延迟 0.5 秒
  console.log('额外 0.5 秒后执行');
}

example();

您也可以使用 AbortSignal 取消延迟:

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

  // 50ms 后取消延迟
  setTimeout(() => controller.abort(), 50);

  try {
    await delay(1000, { signal });
    console.log('1秒已过'); // 此代码不会执行
  } catch (error) {
    console.log('延迟已取消'); // 抛出 AbortError
  }
}

在测试中模拟异步行为时也很有用。

typescript
async function simulateNetworkRequest() {
  console.log('开始网络请求...');
  await delay(2000); // 模拟 2 秒的网络延迟
  console.log('收到响应!');
  return { data: 'test' };
}

参数

  • ms (number): 要延迟的毫秒数。
  • options (DelayOptions, 可选): 延迟选项。
    • signal (AbortSignal, 可选): 可以取消延迟的 AbortSignal。

返回值

(Promise<void>): 返回一个在指定时间后完成的 Promise。

错误

当 AbortSignal 激活时,抛出 AbortError

采用 MIT 许可证发布。