美文网首页
浏览器假死机制(主线程执行顺序)

浏览器假死机制(主线程执行顺序)

作者: Vijay_ | 来源:发表于2017-12-16 00:24 被阅读30次

关于浏览器主线程执行顺序


前阵子在整理异步知识时发现 脚本放在body标签底部时,在script标签中写了一个非常大量的循环。本以为结果是:"页面渲染,页面假死无响应",实际结果却是:"页面无渲染,页面直接假死"。

猜测

  1. 页面顺序解析文档节点后保存于内存中,并未执行渲染,等待主线程执行完同步js代码后进行渲染,在执行异步栈js。(问题:虽然js可以通过获取dom节点内存地址来进行操作说的过去,但是在文档解析后进行dom操作会reflow这一说法就没法解释)

  2. 页面解析文档节点后立即执行(高程三中有讲),那意味着在解析到js脚本并立即执行时页面应该已经渲染出图像,但是没有渲染。

结果

因为js没法使用sleep等强类型语言的线程停止,导致无法测试出真实的线程停止效果,最后使用浏览器的debug工具实现线程暂停。


页面确实如高程三中所讲:顺序解析文档节点并立即执行(渲染)然后执行脚本异步代码,至于为什么上面说执行脚本时页面没渲染是因为浏览器有一个假死机制,暂时不清楚是什么原理,它会判断页面是否能够执行,接而选择是否要渲染该页面

相关文章

  • 浏览器假死机制(主线程执行顺序)

    关于浏览器主线程执行顺序 前阵子在整理异步知识时发现 脚本放在body标签底部时,在script标签中写了一个非常...

  • 2020-02-16 javascript的执行机制

    javascript的执行机制 执行顺序探讨 关于javascript javascript是一门单线程语言,在最...

  • 前端进阶|第四天从setTimeout、Promise看js 的

    要理解这几个函数的执行顺序,需要先明确js的执行机制。Javascript是单线程语言,事件的调度机制是事件循环(...

  • 多线程学习(三)

    一.创建和等待多个线程 //a):多个线程执行顺序是乱的,跟操作系统内部对线程的运行调度机制有关;//b):主线程...

  • JS运行机制

    JS为一门单线程语言;JS的执行机制是Event Loop事件循环 JS单线程,就是按语句出现顺序执行--等待前一...

  • 16.3 JavaScript的执行机制

    浏览器事件轮询机制 js执行为单线程 网络请求、setTimeout、addEventListener属于异步事件...

  • python——多线程

    多线程-threading 子类完成创建多线程 线程的执行顺序也是主线程和各个子线程随机执行,顺序不确定 线程对全...

  • JavaScript - 接触

    JavaScript执行顺序机制,从上到下边解析边执行 浏览器对象window 弹出警告框 文档对象 打印到控制台...

  • JS异步之宏队列与微队列

    书接上文(JS执行机制)前面讲到了浏览器中常驻的一些线程以及JS执行机制初步了解,本文详细讲解的就是异步任务相关的...

  • js定时器

    从JS执行机制说起 浏览器(或者说JS引擎)执行JS的机制是基于事件循环。 由于JS是单线程,所以同一时间只能执行...

网友评论

      本文标题:浏览器假死机制(主线程执行顺序)

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