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 对象 | [✓] | 🟠 | 🀄️ 🔗 |
