用Lodash节流是行不通的

Tom*_*ski 7 javascript lodash

我想使用Lodash throttle来减少滚动时的函数调用.我的代码如下:

window.addEventListener('scroll', _.throttle(() => { console.log('bam'); }), 1000);
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不起作用 - 我一直bam都在使用,而不是每一个都有.

我能做什么?

CodePen:http://codepen.io/tomekbuszewski/pen/oxeOXy?editors = 1111

Zam*_*ney 13

_.throttle函数应该只生成一次,而不是每次事件触发时生成

 var callback = _.throttle(() => { console.log('bam')}, 10000);
    window.addEventListener('scroll', callback);
Run Code Online (Sandbox Code Playgroud)
div {
 height : 100px
}
div > div {
 height : 1000px
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdn.jsdelivr.net/lodash/4.6.1/lodash.min.js"></script>
<div>
  <div></div>
</div>
Run Code Online (Sandbox Code Playgroud)

console.log("bam")调用一次,每10秒


Dau*_*kov 4

您的代码中有一个错误

window.addEventListener('scroll', _.throttle(() => { console.log('bam'); }, 1000));
Run Code Online (Sandbox Code Playgroud)

  • 如果每次触发事件时生成一个新函数,您将不会限制您的函数,您将拥有与没有 _.throttle 一样多的函数,它们都会被延迟...... (2认同)