zoukankan      html  css  js  c++  java
  • 函数节流

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

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

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

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


    debounce

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

    debounce主要应用的场景比如:

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

    这类网上的方法有很多,比如Underscore.js就对throttle和debounce进行封装。jQuery也有一个throttle和debounce的插件:jQuery throttle / debounce,所有的原理时一样的,实现的也是同样的功能。再奉上一个自己一直再用的throttle和debounce控制函数:

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

    更多阅读:

    ruby前端观察
  • 相关阅读:
    [转]自定义水晶报表纸张大小
    [转]Winform(C#)DataGridView显示Tooltip
    格式化日期字符串
    工具下载地址
    servlet: org.apache.tomcat.util.http.fileupload.FileUploadException: Processing of multipart/formdata request failed
    <<精通Spring2.x>>笔记:第2章学习源码
    andriod 缩略图Thumbnails学习
    转: Eclipse程序员要掌握的常用快捷键
    代码:指定大小的图片
    Android自定义的Camera的图片会90度旋转问题
  • 原文地址:https://www.cnblogs.com/rubyxie/p/3511026.html
Copyright © 2011-2022 走看看