Javascript Js:setTimeOut没有函数参数?
为什么我们需要将函数传递给Javascript setTimeOut 为什么我们不能像这样做Javascript Js:setTimeOut没有函数参数?,javascript,timeout,settimeout,Javascript,Timeout,Settimeout,为什么我们需要将函数传递给Javascript setTimeOut 为什么我们不能像这样做 setTimeOut(1000); 我可以传递一个空的或不存在的函数吗 我只想在每次迭代后在for循环中等待。setTimeout在事件循环中注册偶数。JavaScript完成所有当前指令后,将返回事件循环并等待事件发生。当它这样做时,它调用回调函数,这是传递给setTimeout的函数 要使用setTimeout执行for循环,请执行以下操作: function loop(i, n) { d
setTimeOut(1000);
我可以传递一个空的或不存在的函数吗
我只想在每次迭代后在for循环中等待。setTimeout在事件循环中注册偶数。JavaScript完成所有当前指令后,将返回事件循环并等待事件发生。当它这样做时,它调用回调函数,这是传递给setTimeout的函数 要使用setTimeout执行for循环,请执行以下操作:
function loop(i, n) {
doStuff();
if (i < n) {
setTimeout(function() {
loop(i+1, n);
}, 1000);
}
};
loop(0, 10);
函数循环(i,n){
doStuff();
if(i
其中i是当前迭代,n是最大迭代
如果JavaScript不在事件循环中,即它正在运行代码,则会使整个浏览器无响应。只需空转一秒钟就可以做到这一点,因此,如果在循环中迭代10次,浏览器将在10秒钟内无响应,Javascript是单线程的。您可以使用
setTimemout
延迟操作,但线程将继续。所以
function some() {
doStuff();
setTimeout(otherStuff, 1000);
doMoreStuff();
}
随后将运行doStuff
和doMoreStuff
,并在一秒钟后运行otherStuff
。这就是为什么使用setTimeout
作为延迟本身是无用的,也是不可能的。如果doMoreStuff
应该延迟,您应该为延迟进行回调:
function some() {
doStuff();
setTimeout(doMoreStuff, 1000);
}
或者同时使用otherstuff
和doMoreStuff
延迟:
function some() {
doStuff();
setTimeout(function () {
otherStuff();
doMoreStuff()
}, 1000);
}
也许我的答案也有用 -->设置超时(callbackFunction[,interval])
这是可以理解的,因为您将在指定时间后使用指定名称(由您给定)调用函数
-->您不能这样做设置超时(1000)代码>因为1000将被视为回调函数,因为setTimeout()的第一个参数是回调函数
不能定义像这样的函数
函数1000(){
//代码驻留在这里。
}
因为java脚本不允许这些类型的函数名
-->您可以将匿名函数传递给setTimeout()
like
setTimeout(函数(){
//代码驻留在这里。
}[,区间];
上述功能代码将在给定间隔后执行。如果没有给出间隔,则将立即执行
注意:-方括号中给出的参数([,])是可选的
-->您可以参考下面提到的线程供您使用:
因为此线程包含一个函数定义,它在其他语言中的工作方式类似于sleep()
现在,通过一行快速的wait/Async,这是可能的:
await new Promise(resolve => setTimeout(resolve, 1000));
我认为还有一个问题与此相关
你是说像PHP中的sleep()
方法?Javascript中没有这样的东西。你必须用setTimeOut
或setInterval
来完成。没错:)php中的sleep()非常方便。我知道……希望他们正在处理:)不会发生。它违背了JavaScriptI的所有原则,我发现了这个选项:setTimeout(()=>{dosomething},time);但我找不到这方面的文件。但是它是有效的。@Kooilnc这些解决方案在这篇文章中有多好?:。您发布了一个很好的解决方案,但是链接中的解决方案只适用于两次迭代。经过两次以上的迭代,它只会继续激发并返回随机数。在过去的几年里,浏览器处理循环超时的方式有没有变化?@Mikey:检查我链接的问题的答案,并检查答案中的jsfiddle()谢谢。解释了很多。