H5刷新一次页面会多次触发resize怎么办?

挑战
  • 588

H5刷新一次页面会多次触发resize怎么办?用了节流也没用?什么原因怎么改?

       function throttle(func, wait) {
            let previous = 0;
            return function () {
                let now = Date.now();
                let context = this;
                let args = arguments;
                if (now - previous > wait) {
                    func.apply(context, args);
                    previous = now;
                }
            }
        }

        function task() {
            alert(1);
            location.reload();
        }

        window.addEventListener('resize', throttle(task, 500), false)
回复
阅读 634
2 个回答

你写的是节流函数不是防抖, 用这个试试

function debounce(fn,delay=200){
    let timer = null;
    return function(){
        if(timer) clearTimeout(timer);
        timer = setTimeout(()=>{
            fn.apply(this,arguments);
            timer = null;
        },delay);
    }
}

我试了,刷新页面只有throttle执行一次,task一次都没执行

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏