Appearance
delay延迟函数
Hidden Title
基础用法:
await delay(1000)基础用法
说明
delay 用于创建一个延迟结束的 Promise,适合在异步流程中等待一段时间,或在延迟结束后执行一个回调函数。
调用形式
ts
await delay(delay)
await delay(delay, callback)await delay(delay)
await delay(delay, callback)参数说明
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
delay | number | 否 | 0 | 延迟时间,单位毫秒。 |
callback | () => void | 否 | - | 延迟结束后立即执行的回调函数。 |
返回值
返回 Promise<void>。定时器结束后会先执行 callback,再 resolve。
常用场景
ts
await delay(1000)
await delay(300, () => {
console.log('延迟结束')
})
loading.value = true
await delay(500)
loading.value = falseawait delay(1000)
await delay(300, () => {
console.log('延迟结束')
})
loading.value = true
await delay(500)
loading.value = false注意事项
delay 不会取消定时器,也不会捕获 callback 内部异常。若回调里可能抛错,建议在回调内部自行处理。
函数源码
delay
来源:packages/utils/src/base.ts
/**
* 一个辅助函数,用于在代码中创建一个暂停(延迟)。
* 它返回一个 Promise,你可以在 `await` 后使用它来实现类似 "delay" 的效果。
*
* @param delay - 等待的毫秒数。默认值为 0,表示不延迟。
* @param fn - (可选) 一个在延迟结束后立即执行的函数。
*
* @returns 一个 Promise,当延迟结束后解析(resolve)。
*
* @example
* // 基本用法:延迟 2 秒后打印消息
* console.log('开始');
* await delay(2000);
* console.log('2秒后执行');
*
* @example
* // 带回调函数的用法:延迟 1 秒后执行清理工作
* delay(1000, () => {
* console.log('执行清理操作...');
* // 清理代码...
* });
*
* @example
* // 在循环中使用:每次迭代后延迟 500 毫秒
* for (let i = 0; i < 5; i++) {
* console.log(`当前值: ${i}`);
* await delay(500);
* }
*/
export function delay(delay: number = 0, fn?: () => void) {
return new Promise<void>((resolve) =>
setTimeout(() => {
fn?.()
resolve()
}, delay),
)
}