推荐答案
// www.javascriptcn.com code example
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
// 使用示例
async function exampleUsage() {
console.log('开始等待...');
await sleep(2000); // 等待2秒
console.log('等待结束');
}
exampleUsage();本题详细解读
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不会阻塞整个程序,只会暂停当前异步函数的执行。