JavaScript XMLHttpRequest.timeout — таймаут запиту
Властивість timeout задає, скільки чекати на відповідь сервера — у мілісекундах. Після цього запит обривається.
автор: NagarD
Загальний опис
Без таймауту запит може висіти дуже довго — доки не здасться операційна система. Користувач за цей час просто вирішить, що сайт зламався.
При спрацюванні викликається окрема подія — ontimeout, а не onerror. Обробники різні, і це варто пам'ятати.
Значення 0 (за замовчуванням) означає «чекати вічно».
Це, до речі, одна з причин, чому XHR досі живий: у fetch вбудованого таймауту немає — там потрібен AbortSignal.timeout().
автор: NagarD
Переглядачі
Приклади
+ запропонувати свій приклад у пісочниці
Запит, що не висітиме вічно.
const xhr = new XMLHttpRequest();
xhr.timeout = 5000; // 5 секунд
xhr.ontimeout = () => {
// окрема подія — НЕ onerror
console.error('Сервер не відповів за 5 секунд');
};
xhr.onload = () => console.log('Готово');
xhr.open('GET', '/api/slow');
xhr.send();
// у fetch це робиться так:
// fetch('/api/slow', { signal: AbortSignal.timeout(5000) });
автор: NagarD