2011-08-16 16 views
7

मैं एक एपीआई के साथ बातचीत कर रहा हूं जो 5 सेकंड प्रति एक क्रिया की अनुमति देता है। हालांकि, मैं यह सुनिश्चित करना चाहता हूं कि मेजबान के साथ सभी अनुरोध समाप्त हो जाएं। मैं AJAX() का उपयोग कर एपीआई के खिलाफ किए गए अनुरोधों को कतारबद्ध और थ्रॉटल कैसे कर सकता हूं?jQuery थ्रॉटलिंग और AJAX अनुरोधों की कतार

बहुत बाध्य!

उत्तर

9

आप इन पंक्तियों

var requests = []; 

setInterval(function() { 
    if(requests.length > 0) { 
     var request = requests.pop(); 
     if(typeof request === "function") { 
      request(); 
     } 
    } 
}, 5000); 

// then anywhere you need to make an ajax request 
requests.push(function() { 
    // ajax request here 
    $.ajax({ 
     url: "/foo", // some variable from outer scope 
     success: function(a,b,c) { 
      // handle it 
     } 
    }); 
}); 
1

मैं अत्यधिक अजाक्स अनुरोध थ्रॉटल के लिए इस प्लगइन की सिफारिश करेंगे: http://benalman.com/projects/jquery-throttle-debounce-plugin/

+0

यह सुनिश्चित नहीं करता है कि सभी अनुरोध वास्तव में किए जाते हैं - यदि वे अक्सर बनाए जाते हैं तो यह फ़ंक्शन कॉल छोड़ देता है। – Gordon

-2

आप यह सुनिश्चित कुछ भी तो आप सबसे अच्छा इंटरनेट की तुलना में एक मध्यम अन्य प्राप्त होता करना चाहते हैं - यह स्वाभाविक अविश्वसनीय है। वैसे भी, को सुनिश्चित करने के लिए, आप बाद में कॉल शुरू करने के लिए जावास्क्रिप्ट setTimeout विधि का उपयोग कर सकते हैं।

इसके अलावा, यदि आप किसी अन्य तृतीय पक्ष संसाधनों का उपयोग नहीं करना चाहते हैं, तो आप jQuery द्वारा प्रकट delay विधि को देख सकते हैं।

+3

यह एक असंबद्ध राय है। इंटरनेट पर विश्वसनीय डेटा ट्रांसमिशन विशाल है। – Konrads

3

jQuery एक .delay() और इंटरफ़ेस मैं सुझाव है कि आप चेकआउट और के बारे में पढ़ा है साथ कुछ कर सकते हैं।

+0

देरी() और कतार() केवल एनिमेशन पर लागू होती हैं, जो प्रभाव कतार का उपयोग करती हैं। वे AJAX में देरी के लिए सहायक नहीं होंगे। – thenickdude

+1

@ लामाह सच नहीं है, '.delay() 'और' .queue() 'का उपयोग आपकी अपनी कतारों (या डिफ़ॉल्ट' fx' कतार, जो एनिमेशन के लिए उपयोग किया जाता है) के लिए किया जा सकता है। किसी भी सामान्य कार्य को मनमाने ढंग से नामित कतार में जोड़ा जा सकता है। – Chad

+0

आप बिल्कुल सही हैं, स्पष्ट रूप से मुझे सीखना होगा कि दस्तावेज़ीकरण को और अधिक बारीकी से कैसे पढ़ा जाए! – thenickdude

संबंधित मुद्दे