У меня есть состояние гонки, при котором я не хочу, чтобы происходил вызов AJAX, если в данный момент отправляется форма на странице.
Я бы не хотел менять код для формы.
Я думал о присоединении обработчиков событий к каждому из элементов формы, чтобы при отправке он увеличивал счетчик, а затем при onreadystatechange уменьшал счетчик.
Затем перед вызовом AJAX убедитесь, что счетчик равен нулю, прежде чем запустить.
Однако есть более простой способ, например (псевдокод):
form.isSubmitting
EDIT:
Состояние гонки не из-за высказывания JavaScript. Это вызвано тем, что происходит на стороне сервера в ответ на порядок этих действий.
Чтобы дать вам представление о более широкой проблеме:
Файл cookie устанавливается при возврате сообщения формы.
При вызове AJAX (должен происходить каждые X секунд) ... серверная сторона (если произошла публикация формы) ожидает установки файла cookie.
Иногда ....
Если имеется задержка в возврате отправки формы (и настройке стороны клиента cookie), вызов AJAX запускается без отправки cookie обратно.
Сервер ожидает cookie, потому что пост в форме был успешным.
Однако я должен контролировать клиентскую часть, чтобы убедиться, что действия выполняются в установленном порядке.
Так что правильный JavaScript сам по себе не может вызывать условия гонки, но (насколько показал мой тест) - отправка и возврат вызовов POST / AJAX вызывает условие гонки в моем конкретном случае.