函数节流

咱们这里说的throttle就是函数节流的意思。再说的通俗一点就是函数调用的频度控制器,是连续执行时间间隔控制。主要应用的场景好比:css

  • 鼠标移动,mousemove 事件
  • DOM 元素动态定位,window对象的resize和scroll 事件

有人形象的把上面说的事件形象的比喻成机关枪的扫射,throttle就是机关枪的扳机,你不放扳机,它就一直扫射。咱们开发时用的上面这些事件也是同样,你不松开鼠标,它的事件就一直触发。回到window resize和scroll事件的基本优化提到的优化:jquery

setTimeout和clearTimeout其实就是一个简单的 throttle,不少好的控制了resize事件的调用频度。git


 

debounce

debounce和throttle很像,debounce是空闲时间必须大于或等于 必定值的时候,才会执行调用方法。debounce是空闲时间的间隔控制。好比咱们作autocomplete,这时须要咱们很好的控制输入文字时调用方法时间间隔。通常时第一个输入的字符立刻开始调用,根据必定的时间间隔重复调用执行的方法。对于变态的输入,好比按住某一个建不放的时候特别有用。github

debounce主要应用的场景好比:app

  • 文本输入keydown 事件,keyup 事件,例如作autocomplete

这类网上的方法有不少,好比Underscore.js就对throttle和debounce进行封装。jQuery也有一个throttle和debounce的插件:jQuery throttle / debounce,全部的原理时同样的,实现的也是一样的功能。再奉上一个本身一直再用的throttle和debounce控制函数:函数

demo:http://www.css88.com/demo/throttle_debounce/优化

更多阅读:this

相关文章
相关标签/搜索