Как отмечали многие люди в потоке, только потому, что запрос прерывается на стороне клиента, сервер все равно обработает запрос. Это создает ненужную нагрузку на сервер, потому что он выполняет работу, которую мы перестали слушать в интерфейсе.
Проблема, которую я пыталась решить (что другие могут запустить в нее), заключается в том, что когда пользователь вводил информацию в поле ввода, я хотел отменить запрос о типе ощущения Google Instant.
Чтобы избежать стрельбы ненужными запросами и поддерживать привязанность внешнего интерфейса, я сделал следующее:
var xhrQueue = [];
var xhrCount = 0;
$('#search_q').keyup(function(){
xhrQueue.push(xhrCount);
setTimeout(function(){
xhrCount = ++xhrCount;
if (xhrCount === xhrQueue.length) {
// Fire Your XHR //
}
}, 150);
});
Это по существу отправит один запрос каждые 150 мс (переменную, которую вы можете настроить для своих нужд). Если у вас возникли проблемы с пониманием того, что именно происходит здесь, запишите xhrCount
и xhrQueue
на консоли непосредственно перед блоком if.