美文网首页
函数节流

函数节流

作者: 嵩鼠 | 来源:发表于2020-09-15 11:33 被阅读0次
/* 
在一定时间内必须执行一次方法,频繁执行一次事件时则以最后一次延迟时间为主
fn {Fun} 需要执行的函数 
text {*} 需要执行的函数参数
wait {Num}  多长时间内执行方法
mustTime {Num} 超出多长时间直接调用方法无需节流
 */
function throttle(fn, param, wait=500, must_time=5000) {
    clearTimeout(fn.timer) ;
    fn.curr_time = Date.now(); //记录当前时间
//第一次调用
    if (!fn._start) { 
        fn.start_time = fn.curr_time ;
    }
//上次调用函数时间与当前时间进行对比,若大于,则必须执行一次函数,若小于,说明频繁触发中,重置定时器
    if (fn.curr_time - fn.start_time > must_time) { 
        fn.call(fn, param);
        fn.start_time = fn.curr_time ;
    } else {
        fn.timer = setTimeout(function() {
            fn.call(fn, param);
        }, wait)
    }
}

function hello(name){
  console.log(name)
}

throttle(hello,'测试')

相关文章

网友评论

      本文标题:函数节流

      本文链接:https://www.haomeiwen.com/subject/kpaxyktx.html