JavaScript XMLHttpRequest.timeout — таймаут запиту


Властивість timeout задає, скільки чекати на відповідь сервера — у мілісекундах. Після цього запит обривається.

автор: NagarD

Загальний опис

Без таймауту запит може висіти дуже довго — доки не здасться операційна система. Користувач за цей час просто вирішить, що сайт зламався.

При спрацюванні викликається окрема подія — ontimeout, а не onerror. Обробники різні, і це варто пам'ятати.

Значення 0 (за замовчуванням) означає «чекати вічно».

Це, до речі, одна з причин, чому XHR досі живий: у fetch вбудованого таймауту немає — там потрібен AbortSignal.timeout().

автор: NagarD

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
timeout 29+ 12+ 7+ 17+ 12+ 10+
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
timeout 4.4+ yes yes 7+

Приклади

+ запропонувати свій приклад у пісочниці

Запит, що не висітиме вічно.

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

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід