javascript - Issue with setTimeout in ajax based polling using jquery -


इस सवाल का पहले से ही एक उत्तर है: < / P>

  • 3 जवाब

मेरे कोड में मुझे ज़रूरत है एजेक्स का इस्तेमाल करते हुए प्रत्येक 5 सेकंड के बाद एक यूआरएल का चुनाव करें यूआरएल एक जेसन प्रतिक्रिया देता है नीचे वह कोड है जो मैंने $ (दस्तावेज़) के अंदर लिखा था। ऐसा करने के लिए पहले से ही। लेकिन, setTimeout () फ़ंक्शन कार्य नहीं करता है प्रतिक्रिया प्राप्त होने के तुरंत बाद startPoll () फ़ंक्शन को कहा जाता है। मैं पुनरारंभ समारोह को कॉल करने से पहले प्रतिक्रिया प्राप्त होने के बाद 5 सेकंड के लिए रोकना चाहता हूं। इसे ठीक करने का कोई भी तरीका?

  $ (दस्तावेज़) .ready (फ़ंक्शन () {var startPoll = function () {$ .post ('& lt; url & gt;', {}, onPollRequestComplete, 'जेसन');} var onPollRequestComplete = function (प्रतिक्रिया) {responseObject = eval (प्रतिक्रिया); यदि (responseObject.success) {// यहाँ कुछ करो} setTimeout (startPoll (), 5000); / * बाद में अगले मतदान अनुरोध करें 5 सेकंड * /} startPoll ();});  

धन्यवाद

यह आपकी समस्या है:

<प्री> सेटटाइमआउट (स्टार्टपॉल ()), 5000);

आप 5 सेकंड के बाद तुरंत नहीं, तुरंत startPoll कॉल कर रहे हैं इसके बजाय, आपको फ़ंक्शन संदर्भ में पास होना चाहिए, जैसे:

  setTimeout (startPoll, 5000);  

यदि आप मतदान को हर 5 सेकंड में आग लगाते हैं, भले ही पिछली चुनाव काम न करें (एक सर्वर त्रुटि आई थी), आपको इसके बजाय setInterval का उपयोग करना चाहिए। यदि आप त्रुटियों के मामले में मतदान रोकना चाहते हैं तो आपके पास अब अच्छा कोड है।


Comments

Popular posts from this blog

Is there an open source WebSockets (JavaScript) XMPP library? -

java - Is there an object like a "Set" that can contain only unique string values, but also contain a count on the number of occurrences of the string value? -

iphone - How do I make a UIPickerView in a UIActionSheet -