📜  javascript 版本的 sleep - Javascript (1)

📅  最后修改于: 2023-12-03 14:42:36.997000             🧑  作者: Mango

Javascript 版本的 sleep

在编写 Javascript 程序的过程中,我们有时需要程序暂停一段时间,等待某些操作完成,而 JavaScript 没有原生支持 sleep 的功能。该如何实现呢?本文将为大家介绍如何使用 setTimeout 函数来实现 Javascript 版本的 sleep。

实现代码
function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}
如何使用

sleep 函数返回一个 Promise,可以在异步函数中 await 它来暂停执行一段时间。例如:

async function doSomething() {
  console.log("开始执行操作 A");
  await sleep(2000);
  console.log("暂停 2 秒后,执行操作 B");
}

在上面的代码中,操作 B 将在执行了 2 秒的 sleep 后才开始执行。

原理解释

setTimeout 函数是 JavaScript 的原生函数,它可以在一定时间后执行指定的函数。我们使用 Promise 将其封装成一个可暂停的函数。当调用 sleep 函数时,会返回一个 Promise 对象,该对象会在经过指定的时间后调用 resolve 函数,从而使该 Promise 进入 resolved 状态。await 关键字可以让程序暂停执行,直到该 Promise 进入 resolved 状态。

总结

JavaScript 版本的 sleep 可以通过封装 setTimeout 函数实现。它可以在异步函数中用于暂停执行一段时间,等待某些操作完成。是编写异步代码时非常有用的工具。