2011-07-21 16 views
5

मैं XHR के माध्यम से फ़ाइल अपलोड करते समय ऑन प्रोग्रेस ईवेंट की सदस्यता ले रहा हूं। एक बेहतर दृश्य सौंदर्य प्रदान करने के लिए मेरी प्रगति पट्टी एनिमेटेड (jQuery के माध्यम से) है।xhr.upload.on प्रगति आग कितनी बार करता है?

onProgress बहुत तेजी से आग लगती है, तो मैं कितनी बार यह वास्तव में निकाल दिया जाता है, ताकि मैं किसी भी तरह एक प्रक्रिया वसीयत कर सकते हैं जिससे मैं इस के लिए प्रतिक्रियाओं थ्रोटल करूँ ताकि एक लगातार एनिमेटेड प्रगति बार हो सकता है सोचा

उत्तर

2

_.throttle(function, wait)

अंडरस्कोरजेएस में थ्रॉटलिंग कार्यों के लिए उपयोगिताएं हैं।

वास्तविक राशि onProgress प्राप्त किया गया है ब्राउज़र विशिष्ट है इसलिए समय-आधारित समाधान पर वास्तविक कॉलबैक को थ्रॉटल करना सबसे अच्छा है।

7

विस्तार jQuery फायदेमंद हो सकता है; इस सरल विस्तारित jQuery के लिए ओवरहेड के लायक नहीं है। फ़ंक्शन कॉल को सीमित करने के लिए एक प्रभावी समाधान इस प्रकार लिखा जा सकता है:

xhr.upload.onprogress = function(event) { 
    // limit calls to this function 
    if (!this.NextSecond) this.NextSecond = 0; 
    if (Date.getTime() < this.NextSecond) return; 
    this.NextSecond = Date.getTime() + 1000; 

    // this code gets executed at least one second apart from the last time 
} 
संबंधित मुद्दे