JS的事件循环机制

JS的事件循环机制

事件执行的顺序

  1. 当事件开始时,首先会进入JS主线程机制,由于JS属于单线程机制,因此存在多个任务的时候会存在等待的情况,先等待最先进入线程的事件处理完毕

  2. 这样就会出现等待的情况,如果之前的事件没有执行完成,后面的事件就会一直等待

  3. 但是类似于AJAXsetTimeout , setInterval 等待的事件,就出现了异步处理

  4. 通过将异步的事件交给异步模块处理,主线程就会去并行的处理后面的事件

  5. 当主线程空闲的时候,异步处理完成,主线程就会读取异步处理返回的callback执行异步事件后续的操作

同步执行就是主线程按照事件的顺序,依次执行事件
异步执行就是主线程先跳过等待,执行后面的事件,异步事件交给异步模块处理

图解

JS的事件循环机制

  1. 事件开始,进入主线程
  2. 主线程如果发现异步事件,将异步事件移交给异步模块,主线程继续执行后面的同步事件
  3. 当异步进程执行完毕之后,再回到事件队列中
  4. 主线程执行完毕,就会查询事件队列,如果事件队列中存在事件,事件队列就将事件推到主线程
  5. 主线程执行事件队列推过来的事件,执行完毕后再去事件队列中查询… 这个循环的过程就是事件循环