setTimeout(function(){some()}, 5000);
setTimeout(function(){some()}, 5000);
function some() {
//TO DO
}
两个setTimeout或者setInterval,时间间隔一致,都执行一个方法,会同时执行吗? 方法里面的变量会被干扰吗?
setTimeout(function(){some()}, 5000);
setTimeout(function(){some()}, 5000);
function some() {
//TO DO
}
两个setTimeout或者setInterval,时间间隔一致,都执行一个方法,会同时执行吗? 方法里面的变量会被干扰吗?
不会,所有的的setTimeout都会当作延时事件放到队列里,当同步代码执行完毕后,会依次执行延时事件,并不会完全依照设定的时间间隔来执行,也就是说如果到了设定的时间了,但是队列中还有其他代码正在执行,那么继续延后。
正是由于单线程,对于setTimeout( )会执行2次,对于setInterval( )来说,需要将它显式的赋值给一个变量,这个变量保存这这个定时器的唯一ID,以便于后面使用clearInterval( 变量 ) 方式清除定时器。而对于需要定时间隔调用来说setTimeout( )比setInterval( )要好,因为前者至少保证不会有某个定数调用被取消。你可以查看一下这两个函数的功能,深入理解一下~
纯手打,如果有误,请指正。
1)不会同时执行
2)执行的时间点为setTimeout执行时间点+设置的timeout时间,后setTimeout出现的顺序无关
3)执行的时间点是不精确的,如果在设置的超时时间到达后,之前还有任务没有执行完毕,那么函数就不会执行;在前面的任务完成后,才执行。这是JS的单线程执行机制的结果
1.从宏观上来讲,会在设置的时间内 也就是那一毫秒内同时执行
2.但是如果说到到微观上,js是单线程的,也就是不会同时执行两个函数,底层可以理解为,第一个setTimeout 到第二个setTimeout 是有间距的也就是js中的同步执行。而seeTimeout 中的函数才是异步,他们的起始点是不一样;
13 回答12.8k 阅读
7 回答1.9k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答867 阅读✓ 已解决
6 回答1k 阅读
2 回答1.3k 阅读✓ 已解决
不会同时执行,因为JS是单线程的,同一时间只可能有一个函数在运行。