美文网首页让前端飞
[js一点也不难]什么是Event Loop

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

作者: anonymous66 | 来源:发表于2016-11-17 16:31 被阅读84次

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

    相关文章

      网友评论

        本文标题:[js一点也不难]什么是Event Loop

        本文链接:https://www.haomeiwen.com/subject/ffgdpttx.html