前端手写代码面试题
目录

实现一个函数 sleep(ms),暂停指定的时间

· 约 2 分钟读完 · 第 26 / 125 章

推荐答案

本题详细解读

1. 问题分析

sleep 函数的目标是让程序暂停执行指定的时间(以毫秒为单位)。在 JavaScript 中,由于它是单线程的,我们不能直接阻塞主线程,因此需要使用异步的方式来实现暂停。

2. 实现思路

  • 使用 Promise 和 setTimeout 结合来实现异步等待。
  • setTimeout 会在指定的时间后执行回调函数,而 Promise 可以在回调函数执行时被 resolve,从而实现异步等待的效果。

3. 代码解析

  • sleep 函数返回一个 Promise,这个 Promise 会在 setTimeout 指定的时间后被 resolve。
  • 使用 await 关键字可以暂停异步函数的执行,直到 Promise 被 resolve。
  • 在 exampleUsage 函数中,await sleep(2000) 会让程序暂停 2 秒,然后继续执行后续代码。

4. 注意事项

  • sleep 函数只能在 async 函数中使用,或者在 Promise 链中使用。
  • 由于 JavaScript 是单线程的,sleep 不会阻塞整个程序,只会暂停当前异步函数的执行。