请你编写一个异步函数,它接收一个正整数参数 millis ,并休眠 millis 毫秒。要求此函数可以解析任何值。
示例 1:
输入: millis = 100
输出: 100
解释:
在 100ms 后此异步函数执行完时返回一个 Promise 对象
let t = Date.now();
sleep(100).then(() => {
console.log(Date.now() - t); // 100
});
示例 2:
输入: millis = 200
输出: 200
解释: 在 200ms 后函数执行完时返回一个 Promise 对象
提示:
1 <= millis <= 1000
参考方案:
当使用 JavaScript 编写异步函数时,我们可以使用 setTimeout 函数来实现休眠功能。下面是一个示例的异步函数,它接收一个正整数参数 millis ,并在指定的时间后完成异步操作:
/**
* @param {number} millis
* @return {Promise}
*/
async function sleep(millis) {
return new Promise( resolve => setTimeout(resolve , millis))
}
/**
* let t = Date.now()
* sleep(100).then(() => console.log(Date.now() - t)) // 100
*/
// 使用示例
async function example() {
console.log('开始休眠');
await sleep(3000); // 休眠 3000 毫秒
console.log('休眠结束');
}
example();
方案说明:
在上面的代码中,我们定义了一个名为 sleep 的异步函数,它返回一个 Promise 对象。在函数内部,我们使用 setTimeout 函数来延迟指定的时间,然后通过 resolve 将 Promise 标记为已完成。 在 example 函数中,我们展示了如何使用 sleep 函数来实现休眠功能。首先,我们打印出 "开始休眠",然后通过 await sleep(3000) 来让代码在此处等待 3000 毫秒。最后,我们打印出 "休眠结束"。 请注意,由于 sleep 函数是异步的,我们需要在调用它的函数前面加上 async 关键字,并使用 await 来等待异步操作的完成。
LeetCode运行: