XmlHttprequest: как не дать серверу дождаться следующего запроса - PullRequest
0 голосов
/ 24 сентября 2019

Я хочу попросить сервер получить данные.Данные поступают нормально, но это занимает много времени.

Что я хочу сделать, это отправить xmlhttpRequest.send (null) со стороны клиента, быстро отправить данные ответа со стороны сервера.

Я проверилжурнал на стороне сервера, чтобы решить трудоемкую проблему, и обнаружил, что: даже после получения xmlhttpRequest.send (null) он ждет следующего запроса и в конечном итоге истекает.

Интересно, это проблема на стороне сервера илипроблема на стороне клиента при использовании xmlhttprequest.

код на стороне клиента

function HomeLoad() {
    var xhr = new XMLHttpRequest();
    xhr.open('GET', '/HomeLoad.asp', true);
    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4){
            if(xhr.status == 200){
                //home_Arr = xhr.responseText.split('&');
            }
        }
    };
    xhr.send(null);
}

$(document).ready(function() 
{
  HomeLoad();
});

1 Ответ

0 голосов
/ 24 сентября 2019

Синхронные запросы XHR часто вызывают зависания в сети.Но разработчики, как правило, не замечают проблему, потому что зависание проявляется только в плохих условиях сети или когда удаленный сервер медленно реагирует.Синхронный XHR теперь находится в состоянии устаревания.Рекомендуется, чтобы разработчики отошли от синхронного API и использовали синхронные запросы.

Для получения дополнительной информации см. Ниже URL:

https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Synchronous_and_Asynchronous_Requests

var request = new XMLHttpRequest();
request.open('GET', '/bar/foo.txt', false);  // `false` makes the request synchronous
request.send(null);

if (request.status === 200) {
  console.log(request.responseText);
}

Для асинхронного запроса:

var xhr = new XMLHttpRequest();
xhr.open("GET", "/bar/foo.txt", true);
xhr.onload = function (e) {
  if (xhr.readyState === 4) {
    if (xhr.status === 200) {
      console.log(xhr.responseText);
    } else {
      console.error(xhr.statusText);
    }
  }
};
xhr.onerror = function (e) {
  console.error(xhr.statusText);
};
xhr.send(null);

В строке 2 указывается значение true для третьего параметра, указывающего, что запрос должен обрабатываться асинхронно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...