让前端飞

[js一点也不难]什么是Event Loop

2016-11-17  本文已影响84人  anonymous66

JavaScript 的线程机制

JavaScript有一个<b>主线程</b>和<b>Event Loop线程(消息线程)</b>

1、<b>主线程</b>是同步的,也就是一个<b>执行栈</b>。前一个任务结束,才会执行后一个任务。

2、<b>Event Loop线程</b>的任务是不直接进入主线程的执行栈的,而是进入<b>“任务队列”</b>。只有“任务队列”通知主线程,某个异步任务可以执行了,该任务才会进入主线程的执行栈执行。

“任务列表”的机制是<b>先进先出</b>。

大致步骤如下:

(1)所有同步任务都在主线程上执行,形成一个执行栈。
(2)主线程之外,还存在一个“任务队列”。只要异步任务有了运行结果(回调函数等),就在"任务队列"之中放置一个事件。
(3)一旦执行栈中的所有同步任务执行完毕,系统就会读取"任务队列"的任务进入执行栈,开始执行。
(4)主线程不断重复第三步。

总结

JavaScript只有一个主线程的执行栈,其他异步任务的结果都会加入到任务队列,等待主线程的执行栈无任务的时候,就会去获取任务队列的任务执行。

上一篇下一篇

猜你喜欢

热点阅读