throttle_simple

a simple example of throttle

by Zhou Shen

HTML

<button id="btn">click</button>
<div id="display"></div>

JavaScript

/**
 * 创建并返回一个像节流阀一样的函数,当重复调用函数的时候,最多每隔delay毫秒调用一次该函数
 * @param fn 执行函数
 * @param delay 时间间隔
 * @param options 如果你想禁用第一次首先执行的话,传递{leading: false},
 *                如果你想禁用最后一次执行的话,传递{trailing: false}
 * @returns {Function}
 */
function throttle(fn, delay, options) {
  var timer = null;
  var timeStamp = new Date();
  return function() {
    var context = this; //获取函数所在作用域this
    var args = arguments; //取得传入参数
    if (new Date() - timeStamp > delay) {
      timeStamp = new Date();
      fn.apply(context, args);
    }

  }
}

/* 方法执行 */
var btn = document.getElementById('btn');
var el = document.getElementById('display');
var init = 0;
btn.addEventListener('click', throttle(function() {
  init++;
  el.innerText = init;
}, 1000));