美文网首页
关于浏览器的事件循环

关于浏览器的事件循环

作者: 自律财富自由 | 来源:发表于2019-04-08 17:53 被阅读0次

先上一张自己理解的画出的图


image.png

1、js引擎执行js代码是单线程的,也就是只有一个主线程上在执行着代码。
2、执行的任务分为同步任务和异步任务,先执行同步任务。主线程会先将异步任务放到事件队列中(挂起)

  •        同步任务中,遇到函数,在执行函数的时候,会形成当前函数的局部作用域,也就是执行上下文。
           在该上下文中会声明变量,参数,this值确定。如果有其他的函数,只能等待执行,一个一个的排队等 
           待执行,行成函数调用栈。
    

3、同步任务执行完成以后,主线程会去事件队列中寻找有没有异步任务。异步任务又分为微任务和宏任务。
补充:js会先执行宏任务,然后将宏任务的回调推入事件队列中,然后再执行微任务,再将微任务的回调推入事件队列中。执行完宏任务微任务得到结果以后,js内部的其他线程会通知主线程任务执行完毕,可以到事件队列中调取回调了。从事件队列中,是先调取微任务的回调,所有微任务的回调调取完毕,再去调取宏任务的回调,直到事件队列为空。注意执行任务的顺序和调取回调的顺序是相反的

  •        先执行事件队列中所有微任务的回调(比如promise),微任务回调执行完以后再去执行宏任务回调(比如setTimeout)。宏任务 
           当中可能又包含微任务,这样一直执行下去,直到事件队列为空结束。
    

4、以上四步行成整个事件循环的过程

Node的事件循环暂且先不写,之后深入了解Node再来补充。

相关文章

  • 聊一聊浏览器事件循环与前端性能

    在网上也看了不少关于javascript事件循环的文章,多数是以浏览器事件循环与nodejs中事件循环做对比,分析...

  • 关于浏览器的事件循环

    先上一张自己理解的画出的图 1、js引擎执行js代码是单线程的,也就是只有一个主线程上在执行着代码。2、执行的任务...

  • 浏览器和Node事件循环的区别

    事件循环,是 js 中老生常谈的一个话题了,而在浏览器和 Node 中的事件循环执行机制也不相同,浏览器的事件循环...

  • Worker分线程-进程线程-事件处理机制

    浏览器内核 关于定时器的思考 js是单线程执行的 事件循环模型 Worker 进程 线程

  • EventLoop

    1.浏览器中的事件循环(Event Loop) 事件循环可以简单的描述为以下四个步骤 浏览器中的任务源(task)...

  • JavaScript事件循环

    事件循环是什么?事实上我把事件循环理解成我们编写的JavaScript和浏览器或者Node之间的一个桥梁。 浏览器...

  • macrotask与microtask

    浏览器环境 注意点 首先, 一个浏览器环境,只能有一个事件循环 event loops 而一个事件循环可以多个任务...

  • JavaScript事件循环

    解释JavaScript的事件循环 这个帖子关于什么 浏览器普遍将JavaScript作为脚本语言,这篇文章有利于...

  • 回调函数

    浏览器的事件轮询 首先js是单线程的,js异步是浏览器事件轮询的结果。事件轮询的字面意思就是事件循环。事件轮询的步...

  • Nodejs事件循环机制(一)浏览器事件循环机制

    前言 事件循环可以理解为我们编写的js代码与浏览器或者node之间的一个桥梁 浏览器的事件循环是我们编写的js代码...

网友评论

      本文标题:关于浏览器的事件循环

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