Javascript:滚动页面时计时器数量增加

时间:2019-07-09 02:58:45

标签: javascript html timer

我的网站有时会变得非常缓慢,但我无法立即找出原因,
在调试的过程中,我想知道我的网站上有多少个计时器。

所以我只需在控制台面板中输入console.log(setTimeout(() => 'hello world!'))即可显示我的页面的计时器编号。
忽略我原来有多少个计时器,当我一次又一次键入时,计时器编号将像我预期的那样增加1,但是当我稍微滚动页面并再次到达该页面时...

我的计时器数量增加了 20

我想这可能是Macbook触摸栏的行为,所以我访问了 Google 的主页,使用Element-panel删除了所有html项,并添加了一个空白但实际上是高度{{1 }}插入div标签中, Google 主页的计时器也将增加

所以我只创建一个简单且静态的html,这就是它的全部内容:

body

当我滚动页面时,计时器编号不会增加,所以我确定这不是mac touch bar的行为。

我知道这是一个非常奇怪的问题。
没有人知道是什么原因或导致了什么?
或如何跟踪计时器的触发点。谢谢

1 个答案:

答案 0 :(得分:0)

setTimeout()返回计时器ID。这并不意味着以前的计时器仍在运行,只是使用了更多的计时器。

Google可能会使用异步滚动回调来加载更多内容,从而在您滚动时创建计时器。

滚动事件往往会在每次用户互动时触发多次。如果滚动侦听器很昂贵,请使用debouncethrottle事件处理程序来限制其消耗的资源。