Як зауважило багато людей у потоці, лише тому, що запит перервано на стороні клієнта, сервер все ще обробляє запит. Це створює непотрібне навантаження на сервер, оскільки він робить роботу, яку ми кинули слухати на передній частині.
Проблема, яку я намагався вирішити (до якої можуть також долучатися інші), полягає в тому, що, коли користувач вводив інформацію в поле введення, я хотів зняти запит про тип миттєвого пошуку Google.
Щоб уникнути запуску непотрібних запитів і підтримати простоту переднього телефону, я зробив наступне:
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.
$.ajaxStop
?