2621. 睡眠函数
2621. 睡眠函数
题目
Given a positive integer millis
, write an asynchronous function that sleeps for millis
milliseconds. It can resolve any value.
Example 1:
Input: millis = 100
Output: 100
Explanation: It should return a promise that resolves after 100ms.
let t = Date.now();
sleep(100).then(() => {
console.log(Date.now() - t); // 100
});
Example 2:
Input: millis = 200
Output: 200
Explanation: It should return a promise that resolves after 200ms.
Constraints:
1 <= millis <= 1000
题目大意
请你编写一个异步函数,它接收一个正整数参数 millis
,并休眠 millis
毫秒。要求此函数可以解析任何值。
提示:
1 <= millis <= 1000
解题思路
可以通过使用 Promise
来实现一个等待一定时间后继续执行的操作。
JavaScript 提供的 setTimeout
方法正好可以用于设定延迟,它允许在指定的毫秒数之后执行回调函数。
可以结合 Promise
,在 Promise
内部使用 setTimeout
,并在延迟结束时解决该 Promise
,从而实现睡眠功能。
将这段逻辑封装到 sleep
函数中,传入的 millis
参数会决定延迟的时间。
复杂度分析
- 时间复杂度:
O(1)
,函数本身只需要常数时间来设置一个定时器,延迟的时间不算在时间复杂度中。 - 空间复杂度:
O(1)
,只使用了常数空间来存储定时器和Promise
。
代码
/**
* @param {number} millis
* @return {Promise}
*/
async function sleep(millis) {
return new Promise((resolve) => {
setTimeout(resolve, millis); // 在 millis 毫秒后调用 resolve
});
}
/**
* let t = Date.now()
* sleep(100).then(() => console.log(Date.now() - t)) // 100
*/
相关题目
题号 | 标题 | 题解 | 标签 | 难度 |
---|---|---|---|---|
2636 | Promise 对象池 🔒 | [✓] | ||
2637 | 有时间限制的 Promise 对象 | [✓] |