浏览器原理
文章平均质量分 95
小刘不知道叫啥
不要相信直觉!
git: https://github.com/Gravity2333
展开
-
简单聊聊宏任务和微任务
也就是说,如果你的任务代码中,包含同步阻塞代码,比如 while(true);当一帧的渲染完成后,事件循环会调度js引擎来执行宏任务队列中的任务,(这里需要强调,我们写的同步js代码,也会被封装成任务放到宏任务队列中)如果宏任务队列中存在任务,则将其加入到执行栈中执行,执行之后出栈,继续拿出来队列中的下一个任务执行!此时,第一个宏任务执行完成,弹出执行栈,执行栈为空,此时不会去取下一个宏任务,而是去检查微任务队列,执行微任务输出MicroTask1,执行后,微任务队列空,此时再去取下一个宏任务。原创 2024-07-04 18:13:05 · 877 阅读 · 0 评论 -
浏览器原理全面总结
同时这种方式也会造成,如果在html中间引入js代码,那么js代码无法获取下方的dom元素,所以一般会将script标签放到html body的最下方,但是造成的问题是,在html代码都解析完成之后再去下载,解析,执行js,也会增加渲染的时间,能否让下载提前的情况下,也能最后运行js代码。浏览器会维护一个渲染队列,每次对布局有修改,都会push进队列中,等到队列数量够多或者达到一定时间flush队列,生成一个渲染任务,加入到事件循环中,等待js引擎让出主线程后,渲染引擎接入,完成渲染。原创 2024-01-03 12:01:46 · 856 阅读 · 0 评论