setTimeout的异步传输机制

Posted 法克大叔叔

tags:

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

setTimeout是异步的,在设置完setTimeout后,指定代码会在设定的时间后加入到任务队列,但并不是立即执行,js是单线程语言,所有的代码按顺序执行,即同步执行,同步执行的代码放在执行队列中,而异步执行的setTimeout放在任务队列中,执行顺序是先执行完执行队列中的代码再去查看任务队列中是否有要执行的代码

这段代码看上去好像4应该比5先打印出来,但实际上是先打印出5再打印出4:

就如上面所说的,1,3,5都放在执行队列中,而4,2放在任务队列中,所以4,2要等执行队列中的1,3,5执行完后再按它们设定的时间顺序执行,setTimeout所设定的时间是相对于主程序执行结束的时间,并不是一个绝对的值。

以上是关于setTimeout的异步传输机制的主要内容,如果未能解决你的问题,请参考以下文章

在async函数中并发异步执行

js的事件循环机制:同步与异步任务(setTimeout,setInterval)宏任务,微任务(Promise,process.nextTick)

js setTime()详解

前端基础 | JS异步执行机制——事件循环(Event Loop)

为啥带有 setTimeout 的函数不会导致堆栈溢出

0182 JavaScript执行机制:单线程,同步任务和异步任务,执行栈,消息队列,事件循环