JS事件循环

在了解事件循环之前,先来了解一下这几个概念:执行栈(call stack),异步函数,浏览器宿主环境,事件队列

  1. 执行栈:一种数据结构,用于存放各种函数的执行环境,每个函数在执行之前,它的相关信息都会加入到执行栈.函数在调用之前,先创建执行上下文,然后加入到执行环境中;在函数调用后,就将执行环境销毁

  2. 异步函数:在JS中某些函数是不会立即执行的,它需要等到某个时机到达后再执行,这样的函数称为异步函数。比如:事件处理函数; 异步函数的执行时机,会被宿主环境控制

  3. 浏览器宿主环境:

    1. JS引擎:负责执行执行栈顶部的最顶部代码
    2. GUI线程:负责渲染页面
    3. 事件监听线程:负责监听各种事件
    4. 计时线程:负责计时
    5. 网络线程:负责网络通信

上面的线程都存在于宿主环境中

  1. 事件队列:当宿主环境中有的线程发生了某些事情,他们会进入事件队列中进行排列,当JS执行栈中已经没有内容时,事件队列中的第一个函数会加入到执行栈中执行,这就是事件队列。

而事件循环就是:JS引擎对事件队列的取出执行方式,以及与宿主环境的配合,称之为事件循环。

JS引擎永远执行的是执行栈的最顶部

以上内容均为个人看法,如有错误欢迎留言更正

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务