美文网首页
事件循环机制

事件循环机制

作者: 吴高亮 | 来源:发表于2018-12-06 21:59 被阅读0次

想要了解javascript的事件循环机制,首先从基础概念出发;
关于线程和进程

image.png

进程好比图中的工厂;有单独的的自己的工厂资源;
线程就是图中的工人;好多个工人协作;
官方的术语就是:进程是CPU资源分配的最小单位;线程是CPU调度的最小的单位;
javascript大家都知道是单线程;从使用部分来看的话;因为javascript起初是运行在浏览器中的脚本语言;最终操作的都是DOM元素;但是如果同时有两个进行DOM操作的时候;就需要有个先后顺序了;但是浏览器支持多线程;
浏览器内核有多个进程;
每打开一个tap浏览器就会开辟新的线程;
浏览器内核中有多个进程在同时工作;常驻进程有
GUI渲染线程;
JS引擎线程;
事件触发线程;
定时器触发线程;
HTTP请求线程;
同步任务和异步任务;
同步任务就是立即执行的任务;
异步任务:包含宏任务和微任务

image.png

栈:就像一个容器;任务就是在栈中执行;
主线程:就是操作员;负责执行栈中的任务;
任务队列:就像被等待加工的物品;
异步任务完成注册后;会将回调函数加入到任务队列中等待主线程执行;
执行栈中的同步任务执行完毕后,会查看执行任务队列中的事件函数;于是任务队列的函数结束等待状态,进入执行栈;

异步任务分为宏任务和微任务;宏任务队列可以有多个;微任务队列只有一个;


image.png

Eventloop;事件执行机制;
事件分为同步任务和异步任务;而异步任务有分为宏任务和微任务;宏任务有DOM的操作,setTimeout,setIntervor setImmediate I/O和rendering等事件;微任务包括;

Object.observe;重点关注实现了对对象的监控可以简单的实现数据的脏查询;以及实现MV*等一系类的框架实现;

先不扯那么远;[https://blog.csdn.net/hao5743/article/details/51767052];回头仔细研究这个里面的内容;区分脏查询;深入了解他们的实现机制;还有这个[https://segmentfault.com/a/1190000012787829]
回头继续说咱们的eventLoop;
当全局任务开始的时候;任务以此的如栈出栈;当遇到异步任务的时候;会调用异步模块;当栈为空的时候;回调用微任务的额队列;当微任务执行完毕的时候;会去读取宏任务排在前面的任务;执行宏任务的时候遇到微任务;会将其加入微任务队列;这样就形成了循环;

image.png
image.png
image.png

相关文章

  • 并发:事件循环 & asyncio

    1. 事件循环机制 1.1. 什么是事件循环 事件循环(Event Loop),即通过轮询方法监控事件; asyn...

  • 《浏览器工作原理与实践》学习笔记(四)

    消息队列和事件循环 要想在线程运行过程中,能接收并执行新的任务,就需要采用事件循环机制。 事件循环机制:相比于线性...

  • 事件循环机制

    同步任务和异步任务 同步任务 即可以立即执行的任务,例如 console.log() 打印一条日志、声明一个变量或...

  • 事件循环机制

    js是单线程的。浏览器: js执行线程:负责执行js代码 UI线程:负责UI展示,负责展示给用户看到的页面 js事...

  • 事件循环机制

    事件循环(evenloop) 事件循环机制是宿主环境提供的。js中处理异步,增加了任务队列的概念(你不知道的js中...

  • 事件循环机制

    静下心学了一波事件循环机制,好开心,我学会了,首先还是得感谢作者写的笔记特别详细 链接: http://www.c...

  • 事件循环机制

    Javascript是单线程执行的,出现异步时,并不会阻塞JS的执行,而是接着往下执行,等到异步结果返回时再处理。...

  • 事件循环机制

    JS 有个全局的函数执行栈,这是执行同步函数的地方 除了函数执行栈,还有一个事件队列,这是执行异步函数的地方 异步...

  • 事件循环机制

    想要了解javascript的事件循环机制,首先从基础概念出发;关于线程和进程 进程好比图中的工厂;有单独的的自己...

  • 事件循环机制

    JS中存在一个叫做执行栈的东西。JS的所有同步代码都在这里执行,当执行一个函数调用时,会创建一个新的执行环境并压到...

网友评论

      本文标题:事件循环机制

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