Да, проблема async: false
.Используя async: false
, вы заставляете браузер приостанавливать основной поток пользовательского интерфейса, пока выполняется вызов ajax. Нет Обновления пользовательского интерфейса будут разрешены, нет может выполняться другой код JavaScript и т. Д., Пока не завершится вызов ajax.
async: false
никогда не будет правильным.В лучшем случае это делает в любом случае плохой UX (по крайней мере, он замораживает вкладку, а также, возможно, другие связанные вкладки; в старых браузерах [например, IE8] он заморозил весь пользовательский интерфейс браузера).
Удалите async: false
и (исходя из вашего кода) просто отключите отправку формы / выполнение действия, частью которого является эта проверка, в то время как вместо этого ожидается ожидание вызова Ajax.
Примечание 1: 1,5 секунды - этодолго гадать, что-то происходит.Предложить отзыв в течение 250 мс;немедленная обратная связь обычно лучше.
Примечание 2: Я предполагаю, что message_timer
где-то объявлено.:-) Если нет, код становится жертвой того, что я называю Ужас неявных глобалов , и вы захотите где-то объявить, что обе эти функции имеют к нему доступ(но не в идеале глобально).