Js:没有函数参数的setTimeOut?

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)

或两者otherstuffdoMoreStuff延迟:

function some() {
  doStuff();
  setTimeout(function () {
               otherStuff();
               doMoreStuff()
             }, 1000);
}
Run Code Online (Sandbox Code Playgroud)

也许我对这个SO问题的回答也很有用.


Mar*_*edo 9

现在可以通过快速一行中的 Await/Async 实现这一点:

await new Promise(resolve => setTimeout(resolve, 1000));
Run Code Online (Sandbox Code Playgroud)

我认为还有另一个问题与 Combination of async function + wait + setTimeout相关


归档时间:

查看次数:

18449 次

最近记录:

10 年,10 月 前