我写了一个JS脚本,似乎工作正常。但是,随机点它会使浏览器冻结。后者尤其在移动设备上很快/经常发生。是否有任何工具可以检查哪些部分混乱,即可能需要太多RAM / CPU?
我知道Chrome DevTools中有“个人档案”等内容,但我没有足够的经验来查看问题所在。如果这是正确的,那么有没有指针?
提前致谢!
答案 0 :(得分:1)
要记住的主要事情是JavaScript是单线程的。如果一个函数需要很长时间,那么它将阻止事件循环,因此其他函数无法运行。例如,您在jQuery中找到的动画通过在计时器上重复调用函数来工作。如果某个功能阻止了事件循环,那么根据您的页面及其中的内容,可能会降低许多功能,并且浏览器可能会冻结。
所以大多数问题都是由执行时间太长的函数引起的。
'Profiles'是一个很好用的东西。启动个人资料,运行您的页面直到发生“坏”事件,然后查看结果。 Chrome会按照执行时间的顺序列出功能。如果你发现一个函数比你想象的要花费更多的时间,那就是你的罪魁祸首。调用函数的次数越多,执行的时间就越多,但如果编写代码,则应该知道调用各种函数的频率。