setTimeout 为0的作用

Posted yhl-0822

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了setTimeout 为0的作用相关的知识,希望对你有一定的参考价值。

js是单线程,你得setTimeout函数虽然时间设置为0,但是也是一个异步,他会在任务池中排队等待js引擎空闲才执行.

js的执行是单线程的,都需要排队去执行的,循环在一瞬间就完成了,即使时间是0,也是在排队。除非你用闭包去解决这个问题,就可以一次输出你想要的了

 

跟js的执行机制有关,js是单线程的,同一时间只能做一件事,通过事件轮询实现异步的执行,直接调用函数变量之类同步执行会进入到执行栈中,按顺序执行,所有的异步执行,则会放入执行队列,在回调接到相应后,插入到执行栈中执行。
setTimeout是个异步执行的回调,在执行队列中,所以会等所有的for循环任务栈结束后再执行,设置的时间代表当回调执行时,等待多长时间后执行,而不是js解析器读到这段代码,等待多长时间执行,所以有时候还会感觉执行时间比给定的时间长。

返回值就像上面所说的是定时器编号,所以一般使用定时器,都会给予一个命名,方便以后清除定时器。

 

https://segmentfault.com/q/1010000010351840

 

以上是关于setTimeout 为0的作用的主要内容,如果未能解决你的问题,请参考以下文章

setTimeout,setInterval运行原理

关于setInterval和setTImeout中的this指向问题

setTimeout 为0的作用

关于setTimeout()你所不知道的地方,详解setTimeout()

javascript(定时函数)

setTimeout(call,0)作用