我怎樣才能制作一個在重復之前暫停一段時間的回圈?我嘗試setTimeout在while回圈內部使用,但沒有用。
uj5u.com熱心網友回復:
JavaScript 是單執行緒的,所以要避免阻塞,這就是為什么在語言中投入了大量精力來標準化Promise和添加async/await
這允許在不阻塞的情況下暫停代碼執行,這里你是如何做到的:
// Only available in Node v15
import { setTimeout as pause } from 'timers/promises'
// if not in node:
const pause = delay => new Promise(s => setTimeout(s, delay))
async function sayHelloEverySeconds() {
while (true) {
await pause(1000) // 1 sec
console.log('hello')
}
}
sayHelloEverySeconds()
但是對于這個確切的函式,setInterval直接使用會更簡單:
setInterval(() => console.log('hello'), 1000)
這將每秒鐘執行一次函式
uj5u.com熱心網友回復:
您不需要使用 async/await 函式、promise 或while回圈。呼叫函式并setTimeout在設定的時間后再次呼叫該函式。
function loop(count = 0) {
console.log(count);
setTimeout(loop, 1000, count);
}
loop();
uj5u.com熱心網友回復:
如果您確實想實作 setInterval (我不推薦),請這樣做:
async function sayHelloEverySeconds() {
while (true) {
await new Promise((res, rej) => {
setTimeout(() => {
console.log('hello')
res()
}, 1000) // 1 sec
})
}
}
sayHelloEverySeconds()
當然,如上所述,使用 setInterval(callback, ti??meInMS)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/347973.html
標籤:javascript 循环 while 循环 设置超时
下一篇:如何制作代碼回圈的特定部分?
