चूंकि थ्रेड पर कई लोगों ने उल्लेख किया है, सिर्फ इसलिए कि क्लाइंट-साइड पर अनुरोध को रद्द कर दिया गया है, सर्वर अभी भी अनुरोध को संसाधित करेगा। यह सर्वर पर अनावश्यक भार पैदा करता है क्योंकि यह ऐसा काम कर रहा है जिसे हमने फ्रंट-एंड पर सुनना छोड़ दिया है।
जिस समस्या को मैं हल करने की कोशिश कर रहा था (जो कि दूसरों को भी चल सकती है) वह यह है कि जब उपयोगकर्ता किसी इनपुट क्षेत्र में जानकारी दर्ज करता है, तो मैं 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);
});
यह अनिवार्य रूप से प्रत्येक 150ms (एक चर जिसे आप अपनी आवश्यकताओं के लिए अनुकूलित कर सकते हैं) एक अनुरोध भेजेंगे। यदि आपको यह समझने में परेशानी हो रही है कि वास्तव में यहाँ क्या हो रहा है, तो लॉग करें xhrCount
और xhrQueue
यदि ब्लॉक से ठीक पहले कंसोल पर।
$.ajaxStop
?