Я сделал скромное количество испытаний. Чтобы проверить, я загрузил свой веб-сайт, остановил локальный сервер и затем попытался выполнить запрос AJAX. Я установил timeout
на что-то низкое, например 1000 мс, пока не смогу убедиться, что у меня минимальный код (вы должны поставить xhr.timeout
после open
и до send
).
Как только я заработал, моей первоначальной целью было определить подходящее количество времени, чтобы позволить, однако я был удивлен, насколько быстро браузер игнорирует timeout
. Моя цель изменилась, чтобы попытаться определить, какой максимальный тайм-аут может быть до того, как обработка ошибок перестанет быть жизнеспособной. Это означает, что через эти довольно короткие промежутки времени ваш скрипт обработчика тайм-аута не будет работать вообще . То, что я нашел, было довольно жалким.
- Chrome 60: 995 мс, 996 мс выбросит грязную злую ошибку в консоль.
- Firefox 52 ESR: ~ 3000 мс, положение мыши или другие проблемы могут не вызывать реакции в течение трех секунд или чуть меньше.
Итак ...
xhr.open(method,url,true);
xhr.timeout = 995;//REALLY short
xhr.send(null);
xhr.ontimeout = function ()
{
//Code will only execute if at or below *effective* timeouts list above.
//Good spot to make a second attempt.
}
Так что, если ваш timeout
установлен выше, чем 995 мс Chrome проигнорирует ваш код и рвет на вашей чистой чистой пустой консоли, которую вы усердно работали, чтобы поддерживать чистоту. Firefox не намного лучше, и есть ненадежные запросы, которые просто превышают время ожидания, превышающее мое терпение, и при этом игнорируют обработчик ontimeout
.