function disableButton(element, callback) {
$(element + " .loading-spinner").css('display', 'inline-block');
$(element).attr("disabled", true);
alert('1');
callback();
}
function enableButton(element, callback) {
$(element + " .loading-spinner").css('display', 'none');
$(element).attr("disabled", false);
alert('3');
callback();
}
function executeAjax(data, callback) {
alert('2');
callback();
}
$( ".custom-button" ).click(function(e) {
disableButton('.custom-button', function() {
executeAjax('testdata', function() {
enableButton('.custom-button', function() {});
});
});
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<button class="custom-button"><span class="loading-spinner" style="display:none;">Loading </span>BUTTON</button>
&#13;
我对执行函数的顺序有些问题。我尝试使用promises和callback来修复它,但这一切都没有用。
我有这三个函数:disableButton(),enableButton()&amp; executeAjax()
问题是:警报按正确的顺序弹出:1,2和3.但是......启用和禁用状态不起作用。如果我使用超时,它可以工作,但否则css和disable状态不会以正确的顺序执行。我该如何解决这个问题?