MVC c # множественная обработка запросов ajax, как управлять? - PullRequest
0 голосов
/ 10 февраля 2012

У меня есть поле автозаполнения поиска по каждому попаданию, и я заставил его отправлять запросы каждые 500 мс.

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

Это заставляет клиента ждать дальнейших действий на основе ajax, пока все предыдущие запросы не будут выполнены. Решением, которое я пытаюсь реализовать, является использование метода .abort () в ajax следующим образом:

var currentRequest =null;
function keyUp(...){
if(currentRequest!=null){
  currrentRequest.abort();
}
currentRequest = $.get(...);

Но, несмотря на это, на стороне сервера контроллер все еще получил все ожидающие запросы, которые были отменены с помощью .abort().

Есть ли способ определить состояние подключения клиента, чтобы избежать обработки запросов на стороне сервера?

1 Ответ

0 голосов
/ 16 февраля 2012

В коде на стороне сервера вы можете использовать свойство Response.IsClientConnected, чтобы определить, был ли запрос отменен на стороне клиента или нет.Поэтому вы могли бы высвободить ресурсы, используемые в настоящее время для запросов, которые больше не требуются.

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

Кстати, вы действительно хотите оптимизировать код в вашем контроллере, который занимает около 5 секунд, чтобы вернуть значение, поскольку такая величина задержки для элемента динамического пользовательского интерфейса, такого как автозаполнение, не дастхороший пользовательский опыт.

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