力扣刷题:睡眠函数

137 阅读2分钟

前言:锻炼自己的思想,规范自己的编程思路。

问题:请你编写一个异步函数,它接收一个正整数参数 millis ,并休眠这么多毫秒。要求此函数可以解析任何值。

示例:(放代码里面)

输入:millis = 100
输出:100
解释:
在 100ms 后此异步函数执行完时返回一个 Promise 对象
let t = Date.now();
sleep(100).then(() => {
  console.log(Date.now() - t); // 100
});

思路:做这个题目的时候正好很想睡觉,看到这个题目差点直接躺下,撑着最后一点意志,写完这个歌题目。

题目函数给了一个正整数参数millis ,所以我使用setTimeout函数来实现休眠。它返回一个Promise 对象,当休眠时间结束后,该 Promise对象会被解析为传入的 millis 值。

setTimeout 函数接受两个参数:一个回调函数和一个延迟时间(时间以毫秒为单位)。当延迟时间结束后,回调函数会被执行。在这个例子中,我们传入了一个箭头函数作为回调函数,它会调用 resolv函数并传millis 值。这样,当延迟时间结束后,Promise 对象就会被解析为millis 值。

基于上述思考,代码如下:

/**
 * @param {number} millis
 */
async function sleep(millis) {
  return new Promise(resolve => setTimeout(() => resolve(millis), millis));
}

执行结果如下图:

image-20230531230010307.png

学习到的知识点:

  1. 异步编程:异步编程是 JavaScript 中非常重要的一个概念,允许在不阻塞主线程的情况下执行耗时的操作。
  2. Promise:这返回一个Promise对象。Promise是 JavaScript 中用于表示异步操作的结果的一种对象。它提供了一种简洁、清晰的方式来组织和处理异步代码。
  3. setTimeout:使用 setTimeout 函数来实现休眠。setTimeout 是 JavaScript 中用于在指定时间后执行某个操作的函数。它是异步编程中常用的一个工具。
  4. 箭头函数:箭头函数来定义回调函数。箭头函数是一种简洁的函数定义语法,它在处理回调函数时非常方便。