Требуется сделать POST-запрос к php-файлу, передав ему FormData. Получив данные, php делает некоторые расчеты и возвращает результат. Бэкенд - не мой. Но и вопрос в другом. Проблема такова, что при крупных введенных (и отправленных) числах бэкенд начинает тормозить и долго отдает результат. А браузер в это время почему-то подвисает, хотя запрос делается асинхронный. Причем подвисает не так что бы намертво - вкладки браузера переключаются, скролл работает, и даже вкладка закрывается (правда со второй попытки). Но все элементы на странице становятся неактивными, нельзя никуда кликнуть, выделить и т.д. Когда же бэкенд возвращает ответ - все снова "оживает".
Вот код запроса:
let xhr = new XMLHttpRequest()
xhr.open('POST', url, true)
xhr.onload = () => {
if (xhr.status == 200) {
//Some function call...
}
}
xhr.send(form_data)
Делал также через fetch, async/await ивсе такое, но результат тот же.
Понятно, что надо фиксить бэкенд в любом случае, но интересует другое - насколько я понимаю, браузер же все равно не должен зависать в ожидании ответа. Почему он зависает (ну или вообще может зависать)?