js事件队列

Posted wuqiqi

tags:

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

1.js的执行是单线程的。

2.而当它遇到了window的setTimeout和setInterval这样的异步任务,js都默默地先不执行这些回调,而是继续向下执行其他js脚本,等到所有js脚本都解析执行完了,再执行回调。


3.那么有多个回调的时候执行顺序是怎么样的呢?

浏览器是多线程的,js执行线程只是它多个线程中的一个。

当js的执行线程看到了setTimeout,浏览器马上会调用其他线程把这个函数中的回调扔到浏览器的事件队列中,事件队列是先入先出的队列。

那么在js执行线程执行完所有脚本空闲的时候,事件队列中的事件回调,会一个一个被拿出来执行。

浏览器有一个内部大消息循环Event Loop(事件循环),会轮询事件队列并处理事件。




以上是关于js事件队列的主要内容,如果未能解决你的问题,请参考以下文章

js 事件循环消息队列和微任务宏任务

JS基础:Event loop事件循环解析

js异步——事件循环和消息队列

js事件队列

js事件队列

js事件循环机制