如何讓 JavaScript 函數進行休眠
了解如何讓你的 JavaScript 函數暫停執行一段時間
有時候你希望你的函數暫停執行一定的秒數或毫秒數。
在 C 或 PHP 這樣的編程語言中,你可以呼叫 sleep(2)
來使程式停止執行 2 秒。Java 使用 Thread.sleep(2000)
,Python 使用 time.sleep(2)
,Go 使用 time.Sleep(2 * time.Second)
。
JavaScript 沒有原生的 sleep 函數,但由於 promises 的引入(以及 ES2018 中的 async/await),我們可以以非常清晰易讀的方式實現這樣的功能,讓你的函數休眠:
1 | const sleep = (milliseconds) => { |
或者,在 Node.js 中,更簡單的方式如下:
1 | const { promisify } = require('util') |
在 promisify 上了解更多
你可以在 then
回調函數中使用它:
1 | sleep(500).then(() => { |
或者在 async 函數中使用它:
1 | const doSomething = async () => { |
請記住,由於 JavaScript 的工作方式(詳細了解 事件迴圈),這並不像在其他語言中可能發生的那樣,暫停整個程式的執行,而只是使你的函數休眠。
你可以將相同的概念應用到迴圈中:
1 | const list = [1, 2, 3, 4] |
tags: [“JavaScript”, “非同步函數”, “休眠”, “promises”, “async/await”]