性能 - window.onscroll vs setInterval

时间:2017-01-05 00:17:41

标签: javascript

什么是更好的解决方案性能 - 通过setInterval每100毫秒执行一次函数或滚动页面时执行函数?我刚检查过,单个滚动可以使一个函数执行50次以上。将setInterval设置为100ms将导致函数每秒仅执行10次,但是在缺点下,即使页面未滚动,也会执行该函数。

该功能相当简单(检查window.pageYOffset,如果超过100则更改样式)

1 个答案:

答案 0 :(得分:3)

这听起来像是pipeline: build: image: node:latest commands: - npm install - npm test - npm run eslint integration: image: mongo-test commands: - mvn test 功能的工作。这种方法速率限制了对函数的调用。

你提到单个滚动击中你的回调超过50次。通过利用debounce,在去抖动函数未被调用指定的时间之前,不会调用回调。 (在下面的例子中300ms)

debounce

可以在以下位置找到更完整的解释和示例var scrollHandler = debounce(function() { // your window.pageYOffset logic }, 300); window.addEventListener('scroll', scrollHandler); 函数:

https://davidwalsh.name/javascript-debounce-function

Can someone explain the "debounce" function in Javascript

使用这种方法可以实现更优化的调用次数,并且只有在与页面交互时才会发生这种情况(滚动页面时会发生这种情况)。