函数的去抖与节流

/**
* 函数去抖
* 空闲控制 返回函数连续调用时, 空闲时间必须大于或等于 wait, fn 才会执行
* @param wait { number } 空闲时间, 单位毫秒
* @param fn {function}  请求关联函数,实际应用需要调用的函数
* @return {function}    返回客户调用函数
*/
function debounce(fn, wait){
 var timeout;
 return function () {
   var ctx = this,
     args = arguments;
   clearTimeout(timeout);
   timeout = setTimeout(function () {
     fn.apply(ctx, args);
   }, wait);
 };
}

/**
 * 函数节流
 * 频率控制 返回函数连续调用时,fn 执行频率限定为 次 / wait
 * @param wait  {number}    延迟时间,单位毫秒
 * @param fn {function}  请求关联函数,实际应用需要调用的函数
 * @return {function}    返回客户调用函数
 */
function throttle(fn, wait) {
  var last = 0;
  return function () {
    var curr = new Date();
    if (curr - last > wait) {
      fn.apply(this, arguments);
      last = curr;
    }
  }
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容