gio*_*o79 3 javascript timeout settimeout
为什么我们需要将函数传递给Javascript setTimeOut https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers.setTimeout
为什么我们不能像简单的那样做
setTimeOut(1000);
Run Code Online (Sandbox Code Playgroud)
我可以在那里传递空或无功能吗?
我想在每次迭代后等待for循环.
Koo*_*Inc 11
Javascript是单线程的.您可以使用setTimemout推迟操作,但线程将继续.所以
function some() {
doStuff();
setTimeout(otherStuff, 1000);
doMoreStuff();
}
Run Code Online (Sandbox Code Playgroud)
将运行doStuff,doMoreStuff随后,并将otherStuff在一秒后运行.这就是为什么它setTimeout本身没用,也不可能用作延迟.如果doMoreStuff应该推迟,你应该把延迟的回调:
function some() {
doStuff();
setTimeout(doMoreStuff, 1000);
}
Run Code Online (Sandbox Code Playgroud)
或两者otherstuff和doMoreStuff延迟:
function some() {
doStuff();
setTimeout(function () {
otherStuff();
doMoreStuff()
}, 1000);
}
Run Code Online (Sandbox Code Playgroud)
也许我对这个SO问题的回答也很有用.
现在可以通过快速一行中的 Await/Async 实现这一点:
await new Promise(resolve => setTimeout(resolve, 1000));
Run Code Online (Sandbox Code Playgroud)
我认为还有另一个问题与 Combination of async function + wait + setTimeout相关
| 归档时间: |
|
| 查看次数: |
18449 次 |
| 最近记录: |