Может показаться, что класс не удален, но в действительности вы удаляете класс, а затем мгновенно добавляете его обратно в элемент.
В вашей попытке поймать у вас есть
} finally {
$("#uploadSpinner").addClass("hidden");
}
и, наконец, всегда будет работать сразу после того, как закончится ваш блок попытки.
Как указано в MDN:
finally_statements:
Операторы, которые выполняются после выполнения оператора try. Эти операторы выполняются независимо от того, было ли исключение выброшено или перехвачено.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/try...catch
Итак, ваш код запускает блок try, который удаляет класс, но затем просто мгновенно добавляет его обратно в ваш блок finally. Это происходит потому, что setTimeout
и я предполагаю, что ваша SubmitForm
функция асинхронна.
Вам потребуется вернуть обратный вызов или Promise
из функции SubmitForm
, чтобы вы могли затем удалить загрузчик после завершения отправки формы.
Вы сможете исправить это, изменив свою функцию на
function submitForCorrection() {
$("#uploadSpinner").removeClass("hidden");
setTimeout(function() {
SubmitForm('BoqReviewForm',
'boqReviewTable',
'@Url.Action("PostBoqFlags", "ProjectAuthority")',
'@Url.Action("GetBoqReview", "ProjectAuthority")',
function() {
showNotification('Correction requested.', 'success');
$("#uploadSpinner").addClass("hidden");
},
null,
'Requesting correction. Please wait',
false
);
}, 100);
}