0

我写了一个 JS 脚本,它似乎工作正常。但是,它会在随机点使浏览器冻结。后者尤其很快/经常发生在移动设备上。是否有任何工具可以检查哪些部分搞砸了,即可能需要太多的 RAM/CPU?

我知道 Chrome DevTools 中有诸如“配置文件”之类的东西,但是我没有足够的经验来了解问题所在。如果这是正确的做法,是否有任何指示?

提前致谢!

4

1 回答 1

1

要记住的主要事情是 JavaScript 是单线程的。如果一个函数需要很长时间,那么它将阻塞事件循环,因此其他函数无法运行。例如,您在 jQuery 中找到的动画通过在计时器上重复调用函数来工作。如果一个函数阻塞了事件循环,那么根据您的页面和其中的内容,许多功能可能会降级并且浏览器可能会出现冻结。

所以大多数问题都是由执行时间过长的函数引起的。

'配置文件'是一个很好的用途。启动配置文件,运行您的页面,直到发生“不好”的事情,然后查看结果。Chrome 会按照函数执行时间的顺序列出函数。如果你发现一个函数花费的时间比你想象的要多,那就是你的罪魁祸首。调用函数的次数越多,执行所需的时间就越多,但是如果您编写了代码,那么您应该知道调用各种函数的频率。

于 2013-09-09T09:25:32.563 回答