页面被连续点击,发送多次请求,解决方案

  • Post author:
  • Post category:其他


设置一个门槛值,表示两次 Ajax 通信的最小间隔时间。如果在间隔时间内,发生新的keydown事件,则不触发 Ajax 通信,并且重新开始计时。如果过了指定时间,没有发生新的keydown事件,再将数据发送出去。

这种做法叫做 debounce(防抖动)。假定两次 Ajax 通信的间隔不得小于2500毫秒。

var timer = null; // 声明计时器

function debounce(fn, delay){
    console.log("timer:", timer)
    // 清除定时器
    clearTimeout(timer);
    // 新的定时器值
    timer = setTimeout(fn, delay);
}

function getBaidu() {
    console.log("按钮被点击")
    debounce(function () {
        console.log("发送网络请求")
    }, 2500)
}

参考来源:https://wangdoc.com/javascript/async/timer.html



版权声明:本文为Echo_width原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。