JS的事件循环机制
JS的事件循环机制
事件执行的顺序
-
当事件开始时,首先会进入
JS
主线程机制,由于JS
属于单线程机制,因此存在多个任务的时候会存在等待的情况,先等待最先进入线程的事件处理完毕 -
这样就会出现等待的情况,如果之前的事件没有执行完成,后面的事件就会一直等待
-
但是类似于
AJAX
和setTimeout
,setInterval
等待的事件,就出现了异步处理 -
通过将异步的事件交给异步模块处理,主线程就会去并行的处理后面的事件
-
当主线程空闲的时候,异步处理完成,主线程就会读取异步处理返回的
callback
执行异步事件后续的操作
同步执行就是主线程按照事件的顺序,依次执行事件
异步执行就是主线程先跳过等待,执行后面的事件,异步事件交给异步模块处理
图解
- 事件开始,进入主线程
- 主线程如果发现异步事件,将异步事件移交给异步模块,主线程继续执行后面的同步事件
- 当异步进程执行完毕之后,再回到事件队列中
- 主线程执行完毕,就会查询事件队列,如果事件队列中存在事件,事件队列就将事件推到主线程
- 主线程执行事件队列推过来的事件,执行完毕后再去事件队列中查询… 这个循环的过程就是事件循环