Javascript 如何检查最后一个事件?

Javascript 如何检查最后一个事件?,javascript,html,ajax,Javascript,Html,Ajax,我想为视频的每个用户存储默认卷(通过将ajax发布到服务器,然后将其存储到DB中),我写了以下内容: 标题 document.getElementById('video').addEventListener('volumechange',function(){ console.log('change') //向服务器发送请求以通过ajax设置默认卷 }) 一个简单的解决方案是延迟Ajax调用的执行,如下所示: 您的事件调用函数 该函数触发一个超时(setTimeout),该超时持续约50ms

我想为视频的每个用户存储默认卷(通过将ajax发布到服务器,然后将其存储到DB中),我写了以下内容:


标题
document.getElementById('video').addEventListener('volumechange',function(){
console.log('change')
//向服务器发送请求以通过ajax设置默认卷
})

一个简单的解决方案是延迟Ajax调用的执行,如下所示:

  • 您的事件调用函数
  • 该函数触发一个超时(setTimeout),该超时持续约50ms(或更长,取决于您得到的结果)
  • 如果函数在超时仍处于活动状态时被触发,它将取消tge超时并重新启动
  • 如果超时没有被中断,它将执行Ajax调用
  • 例如:

    你需要使用“去盎司”。这与自动完成或提前键入文本框中使用的技术相同。有很多实现和库可以做到这一点

    为了解释去抖动,您设置了一个超时,并在每次触发事件时重置它。如果自上次事件以来经过了足够的时间,则触发该行为

    我复制的例子来自

    您会注意到该示例使用了
    \uu
    。这是因为这也是一个问题

    var timer = null;
    
    function buttonClick() {
        if(timer != null) {
        clearTimeout(timer);
        timer = null;
      } 
      timer = setTimeout(callAjax, 500);
    }
    
    function callAjax() {
        console.log("Ajax...");
    }
    
    document.getElementById("button").onclick = buttonClick;
    
    // Create the listener function
    var updateLayout = _.debounce(function(e) {
    
        // Does all the layout updating here
    
    }, 500); // Maximum run of once per 500 milliseconds
    
    // Add the event listener
    window.addEventListener("resize", updateLayout, false);