处理滚动停止事件

当用户停止滚动时运行回调函数。

  • 使用 EventTarget.addEventListener() 监听 'scroll' 事件。
  • 使用 setTimeout() 等待 150 毫秒后调用给定的 callback
  • 如果在 150 毫秒内触发了新的 'scroll' 事件,则使用 clearTimeout() 清除定时器。
const onScrollStop = callback => {
  let isScrolling;
  window.addEventListener(
    'scroll',
    e => {
      clearTimeout(isScrolling);
      isScrolling = setTimeout(() => {
        callback();
      }, 150);
    },
    false
  );
};

onScrollStop(() => {
  console.log('用户停止滚动');
});