zikkeung
1/17/2014 - 6:14 AM

|-|{"files":{"高频执行事件、方法的防抖.js":{"env":"js"}},"tag":"Uncategorized"}

|-|{"files":{"高频执行事件、方法的防抖.js":{"env":"js"}},"tag":"Uncategorized"}

// 取自 UnderscoreJS 实用框架
function debounce(func, wait, immediate) {
    var timeout;
    return function() {
        var context = this, args = arguments;
        var later = function() {
            timeout = null;
            if (!immediate) func.apply(context, args);
        };
        var callNow = immediate && !timeout;
        clearTimeout(timeout);
        timeout = setTimeout(later, wait);
        if (callNow) func.apply(context, args);
    };
  }
 
// 添加resize的回调函数,但是只允许它每300毫秒执行一次
window.addEventListener('resize', debounce(function(event) {
 
    // 这里写resize过程
 
}, 300));