脚本宝典收集整理的这篇文章主要介绍了javasript的单线程和多线程,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
作为浏览器脚本语言,JavaScript的主要用途是与用户互动,以及操作DOM。这决定了它只能是单线程,如果不是这样,假定JavaScript同时有两个线程,一个线程在某个DOM节点上添加内容,另一个线程删除了这个节点,这时浏览器应该以哪个线程为准? 但是为了利用多核CPU的计算能力,HTML5提出Web Worker标准,允许JavaScript脚本创建多个线程,但是子线程完全受主线程控制,且不得操作DOM。所以,这个新标准并没有改变JavaScript单线程的本质。关于JavaScript多线程操作可以看下这篇:https://cloud.tencent.com/developer/article/1389548
单线程就是只有一个线程,就是主线程嘛,JavaScript和UI渲染占用同一个主线程,比如业务实现上我们要进行一个AJAX查询,做一些数据处理,UI渲染就很有可能被阻断,这个时候浏览器可能就会出现卡顿,降低了用户体验。那总得解决这个问题吧,javascript就产生了异步编程这个概念,进而就有了任务队列、同步任务和异步任务的这个概念。 我们可以把高负载的任务使用异步处理,它们将会被放入浏览器的事件任务队列(event loop)中去,等到JavaScript运行时执行线程空闲时候,事件队列才会按照先进先出的原则被一一执行。 具体操作就是:主线程先执行JavaScript的同步任务,然后将异步任务的操作放到任务队列中去,任务队列中的异步任务采取的是先进先出的原则,等主线程上的同步任务执行完成后,再去执行任务队列中的第一个异步任务。 这样不是极大的优化的用户的体验,无需漫长等待返回的数据,才能继续执行下一步,哈哈哈哈。 大概就是这样子,前端小白,有问题希望各位大佬指出纠正。 ps:这篇文章有借鉴: 1.https://www.cnblogs.com/Shd-Study/p/9297273.html 2.http://www.ruanyifeng.com/blog/2014/10/event-loop.html 3.https://cloud.tencent.com/developer/article/1389548
以上是脚本宝典为你收集整理的javasript的单线程和多线程全部内容,希望文章能够帮你解决javasript的单线程和多线程所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。