函数的去抖与节流

/**
* 函数去抖
* 空闲控制 返回函数连续调用时, 空闲时间必须大于或等于 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;
    }
  }
}

你可能感兴趣的:(函数的去抖与节流)