您的位置:首页 > 汽车 > 新车 > 移动端网站建设方案_手机app界面设计模板图片_杭州网站seo优化_郑州网站seo外包

移动端网站建设方案_手机app界面设计模板图片_杭州网站seo优化_郑州网站seo外包

2024/11/19 4:21:51 来源:https://blog.csdn.net/m0_74577714/article/details/143212758  浏览:    关键词:移动端网站建设方案_手机app界面设计模板图片_杭州网站seo优化_郑州网站seo外包
移动端网站建设方案_手机app界面设计模板图片_杭州网站seo优化_郑州网站seo外包

为什么JS是异步,很有意思,看了袁老师的课,让我醍醐灌顶。

首先呢,JS是一门单线程的语言,它是运行在浏览器的渲染主线程当中,而渲染主线程就只有一个。

而渲染主线程需要做很多的事情,就比如解析HTML,解析CSS,渲染等等任务都会在渲染主线程中去实现。

大家想一想,如果JS是同步的,那会发生什么呢?

看下面这段代码

    setTimeout(()=>{console.log(1);},3000)console.log(2);console.log(3);

如果它是同步就会先等待定时器结束,打印顺序就会变成 1 2 3

这会怎么样?

这只是打印数字,如果说我们有一个交互,我要修改DOM的文本,那我是不是要等定时器执行完毕,到了那时候,页面就不会去渲染,它会等待定时器执行完毕再去改变DOM的文本。

好,继续介绍

如果它是同步就会阻塞页面渲染,也就是会阻塞渲染主线程。这时就会导致事件队列当中的任务被堵住。不能被执行。

这样一来就会导致主线程白白消耗时间,还会造成页面无法及时更新的问题,给用户带来卡顿。

所以浏览器采用异步的方式来避免,它会把比如定时器、事件、网络请求等交给其他线程去做,等它们处理好后就会把事先传递的回调函数包装成任务放到事件队列的末尾,等待主线程的调度。

在这种模式下,主线程永远不会阻塞,从而最大程度的保证了单线程的流程运作。

感谢大家的阅读!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com