码迷,mamicode.com
首页 > 其他好文 > 详细

函数节流(throttle)与函数去抖(debounce)

时间:2015-11-25 00:24:44      阅读:374      评论:0      收藏:0      [点我收藏+]

标签:

throttle 控制函数按照特定的频率执行
debounce 控制函数在特定的时间间隔后再执行

使用场景

throttle

1.拖曳时的mousemove事件
2.射击游戏中的mousedown,keydown事件
3.window的scroll时更新样式,如随动效果

简单实现
var throttle = function(delay, action){
var last = 0;
   return function(){
       var curr = +new Date();
       if (curr - last > delay){
             action.apply(this, arguments);
             last = curr;
        }
};
};

debounce

1. 文字输入(keyup)的自动完成,实时校验
2. window的resize重新计算样式或布局

简单实现
var debounce = function(idle, action){
       var last;
       return function(){
            var ctx = this, args = arguments;
            clearTimeout(last);
            last = setTimeout(function(){
                action.apply(ctx, args);
           }, idle);
       };
};

throttle和debounce的实现

相关js库 underscore.js,lodash.js,jquery-throttle-debounce.js等均有其实现。

 

 参考:http://www.cnblogs.com/fsjohnhuang/p/4147810.html

函数节流(throttle)与函数去抖(debounce)

标签:

原文地址:http://www.cnblogs.com/mengff/p/4993349.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!