如何使您的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教程: