Nano Hash - криптовалюты, майнинг, программирование

поддерживают ли какие-либо браузеры установку тайм-аута для XmlHttpRequest, который выполняется?

Я хочу иметь возможность прерывать асинхронные XMLHttpRequests, которые тратят много времени на ожидание результатов с сервера. Поскольку эти запросы могут быть очень длинными, установка тайм-аута перед отправкой XHR неуместна.

Я могу вызвать XMLHttpRequest.abort(), но хотя это предотвращает вызов обработчиков изменения состояния готовности, похоже, что он не закрывает соединение с сервером, поэтому сервер продолжает работать (наблюдается как в Firefox, так и в Chrome). Похоже, что соединение с сервером не закрывается до тех пор, пока данные не будут окончательно получены с сервера.

В спецификации говорится, что атрибут тайм-аута в XHR может быть установлен в любое время. время, даже после того, как выборка началась: «Это означает, что атрибут тайм-аута может быть установлен во время выборки. Если это произойдет, он все равно будет измеряться относительно начала выборки». Однако установка этого атрибута непосредственно перед или после вызова abort() для XHR, ожидающего данных с сервера, не имеет никакого эффекта в Firefox 26 или Chrome 31. Соединение остается открытым, пока сервер не завершит свою работу и не отправит ответ. заголовки.

Поддерживается ли эта функция в каких-либо браузерах? Или я что-то не так понимаю? Я тестирую с использованием Javascript на стороне клиента и сервлета Java на стороне сервера, поэтому никакие другие фреймворки не мешают.


  • Я думаю, что abort закрывает соединение. Ваша проблема может заключаться в том, что сервер не обнаруживает, что соединение закрыто. Например, PHP не обнаружит, что пользователь разорвал соединение, пока не будет предпринята попытка отправить информацию клиенту (из php.net/manual/en/function.ignore-user-abort.php). 22.02.2016

Ответы:


1

Вы можете найти поддержку здесь. Также обратите внимание, что в IE вам нужно добавить значение timeout после вызова метода open. Пример:

var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {/*code*/};
xhr.open(/*arguments*/);
xhr.timeout = 4000;
xhr.ontimeout = function () { /*Timeout handler*/ }
xhr.send(null);
13.01.2014
  • Я спрашиваю о поддержке установки xhr.timeout после вызова xhr.send(), чтобы принудительно закрыть нежелательное соединение. Спасибо за ссылку, но она только документирует, какие браузеры поддерживают xhr.timout вообще, тогда как мои эксперименты показывают, что FF и Chrome поддерживают его лишь частично — до xhr.send(), но не после. 13.01.2014
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..