Setinterval在滚动上被暂停

时间:2018-08-09 14:46:41

标签: javascript scroll vivaldi

我仅在Vivaldi浏览器上遇到了一个奇怪的错误。

我正在使用setinterval()(每100毫秒)显示滚动中的元素,但是,当我在MacBook Pro上开始滚动时... setinterval会停止触发,并且直到滚动停止后才会恢复。

结果是直到用户真正停止滚动时,在setinterval上淡入的元素才逐渐淡入。为了使它更加奇怪,此行为在页面上停留约10秒后停止。

是否想知道这是什么已知问题或是否有修复程序?

1 个答案:

答案 0 :(得分:1)

这是一个极大的简化,但是您很可能会观察到以下行为 1

调用setTimeout / setInterval时,会将函数放在event queue中,最早在 X ms之后执行

但是,浏览器可能需要在堆栈顶部进行更重要的处理,例如绘制UI。在这种情况下,只有在处理了较高优先级的工作之后,setInterval回调才会被处理。

如何缓解该问题?尝试使用requestAnimationFrame代替工作。

1 欢迎对此帖子进行更正。