# Event Loop
Event Loop是一个很重要的概念,理解这个概念,对理解js的运行有着及其重要的作用!
# JS是怎么执行的
首先JS单线程执行的,也就是说,在同一个时间点,只能处理一个任务!这就需要这些任务进行“排队”!而任务又区分是同步任务还是异步任务。
- 在同步任务的情况下:
JS由上而下依次执行每一行语句。当前一个任务没有执行完毕,那么后一个任务是不会执行的。 - 那么异步任务呢?因为这个任务不确定会在什么时候会被执行!如一个计时器或者一个
Promise。来同时处理这些任务的时候,谁先执行?谁后执行?
所以在JS内部,区分出了两个队列,及
- 所有同步任务都在主线程执行,并且形成一个执行栈
- 除了主线程,还有一个任务队列,只要异步任务有了执行结果,那么就在任务队列中放置一个事件
- 主线程的执行栈把所有同步任务执行完毕后,就会读取放置异步执行结果的任务队列,如果读取到了异步执行后的事件,那么将结束异步等待状态,进入主线程的执行栈
- 主线程会不断的重复以上动作,这个过程称之为
Event Loop

(图片涞源再谈Event Loop (opens new window))
通过上面的解释,我们就知道,