javascript - 阻止某个函数在一段时间内下次执行

标签 javascript jquery jquery-events

我有一个 JS 函数。我希望它在第一次执行后暂停 10 秒,在那之后我想恢复它。

所以,我所做的是:

$( "#button_yes,#button_no" ).click(function()
{
    if(counter)
    {
        console.log('Done');
        $.ajax(
        {
            url: baseURL+"add_votes",
            success: function(result)
            {
                counter=0;
                alert(result);
                setTimeout(check, 10000); //set a 10s  delay
                counter=1;
            },
            method: "POST",
            data:
                {
                    id : '1'
                },
        });
    }
});

但我工作得并不完美。 如果我多次单击,它会永久阻止该函数第二次执行。

有什么解决办法吗?

最佳答案

如何跟踪上次单击按钮的时间并确保在处理下一次单击之前已经过了 10 秒?

var lastClicked = 0;
$( "#button_yes,#button_no" ).click(function()
{
    var now = new Date();
    if(now - lastClicked > 10000)
    {
        lastClicked = now;
        console.log('Done');
        $.ajax(
        {
            url: baseURL+"add_votes",
            success: function(result)
            {
                alert(result);
            },
            method: "POST",
            data:
                {
                    id : '1'
                },
        });
    }
});

关于javascript - 阻止某个函数在一段时间内下次执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32827251/

相关文章:

javascript - 使用 IndexedDB 保存图片

javascript - AngularJs/ngCordova 自定义构建 ionic 注入(inject)模块错误

javascript - AngularJS 是否为简单的 AJAX 网站提供了优势

javascript - jquery - 如何将 td 移动到另一个 td

javascript - Django:如何在过滤后刷新表格而不刷新整个页面?

javascript - Edge Animate 下层阶段的可访问性

javascript - 通过标签输入下拉搜索

javascript - 当鼠标悬停在 Firefox 中的嵌入式 iframe 上时防止父页面滚动

javascript - 两个元素使用相同的事件函数

javascript - 从 keydown 调用 click,但获取正确的复选框选中属性