在javascript / jquery中处理多线程问题?

$(".getDetails").click(function() {
    // some stuff like fetching response from server
})

当用户在几秒钟内多次点击UI上的getDetails按钮时,jquery会生成两次click函数调用,并且我的逻辑失败.
 我认为解决方法是首先单击自身禁用按钮(这样使用不能多次单击).一旦我得到答复或在返回之前
 从click方法我启用它.有没有更好的解决方案?

如果不是,如何在用户第一次点击按钮时立即禁用按钮.我认为需要在调用click方法或html元素中的某些位置之前完成它?

Java提供了synchronized关键字,以便只有一个线程在方法内输入,我不确定javascript中是否存在类似的东西?

最佳答案 假设click处理程序执行AJAX请求,您可以在发出请求之前将按钮设置为disabled,然后在请求完成后再次启用它.试试这个:

$(".getDetails").click(function(){}
    var $btn = $(this).prop('disabled', true);

    $.ajax({
        url: '/foo'
        success: function() {
            console.log('It worked!');
        },
        error: function() {
            console.log('It failed!');
        }, 
        complete: function() {
            $btn.prop('disabled', false);
        }
    });
});
点赞