什么是更好的解决方案性能 - 通过setInterval每100毫秒执行一次函数或滚动页面时执行函数?我刚检查过,单个滚动可以使一个函数执行50次以上。将setInterval设置为100ms将导致函数每秒仅执行10次,但是在缺点下,即使页面未滚动,也会执行该函数。
该功能相当简单(检查window.pageYOffset,如果超过100则更改样式)
答案 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
使用这种方法可以实现更优化的调用次数,并且只有在与页面交互时才会发生这种情况(滚动页面时会发生这种情况)。