如何使您的JavaScript函数进入睡眠状态

了解如何使用JavaScript使函数休眠一定时间

有时,您希望函数将执行暂停固定的秒数或毫秒数。

在像C或PHP这样的编程语言中,您会调用sleep(2)使程序暂停2秒钟。 Java有Thread.sleep(2000),Python有time.sleep(2),去了time.Sleep(2 * time.Second)

JavaScript没有本机的睡眠功能,但是由于Promise(以及ES2018中的async / await)的引入,我们可以以非常好的可读性实现这种功能,以使您的功能进入睡眠状态:

const sleep = (milliseconds) => {
  return new Promise(resolve => setTimeout(resolve, milliseconds))
}

或者,在Node.js中,更简单:

const { promisify } = require('util')
const sleep = promisify(setTimeout)

查看更多承诺

您现在可以将其与then打回来:

sleep(500).then(() => {
  //do stuff
})

或在异步函数中使用它:

const doSomething = async () => {
  await sleep(2000)
  //do stuff
}

doSomething()

请记住,由于JavaScript的工作原理,请阅读更多信息。事件循环),这不会像其他语言一样暂停整个程序的执行,而是只会让您的函数进入休眠状态。

您可以将相同的概念应用于循环:

const list = [1, 2, 3, 4]
const doSomething = async () => {
  for (const item of list) {
    await sleep(2000)
    console.log('🦄')    
  }
}

doSomething()

免费下载我的JavaScript初学者手册


更多js教程: