# Event Loop


Event Loop是一个很重要的概念,理解这个概念,对理解js的运行有着及其重要的作用!

# JS是怎么执行的

首先JS单线程执行的,也就是说,在同一个时间点,只能处理一个任务!这就需要这些任务进行“排队”!而任务又区分是同步任务还是异步任务。

  • 在同步任务的情况下:JS由上而下依次执行每一行语句。当前一个任务没有执行完毕,那么后一个任务是不会执行的。
  • 那么异步任务呢?因为这个任务不确定会在什么时候会被执行!如一个计时器或者一个Promise。来同时处理这些任务的时候,谁先执行?谁后执行?

所以在JS内部,区分出了两个队列,及

  • 所有同步任务都在主线程执行,并且形成一个执行栈
  • 除了主线程,还有一个任务队列,只要异步任务有了执行结果,那么就在任务队列中放置一个事件
  • 主线程的执行栈把所有同步任务执行完毕后,就会读取放置异步执行结果的任务队列,如果读取到了异步执行后的事件,那么将结束异步等待状态,进入主线程的执行栈
  • 主线程会不断的重复以上动作,这个过程称之为Event Loop

img

(图片涞源再谈Event Loop (opens new window))

通过上面的解释,我们就知道,

# 什么是宏任务

# 什么是微任务

# 宏任务和微任务是如何循环协调的

上次更新: 1/22/2020, 6:06:01 PM