2011-09-16 13 views
9

मैं इस तरह कोड है:jQuery.each फ़ंक्शन के प्रत्येक लूप के बीच देरी कैसे करें?

$('li').each(function(){ 
    var data = $(this).text(); 
    requestFunction(data, function(status){ 
     if (status == 'OK') do stuff... 
    }); 
}); 

तो, मैं फ़ंक्शन का उपयोग करने में विलंब करने की ज़रूरत है "requestFunction()"। मैं ये कैसे करूं? उम्मीद है कि यह समझ में आता है, धन्यवाद। वृद्धि समय में

+2

क्या आप AJAX कॉल कर रहे हैं? –

+0

हां, यह Google मानचित्र जियोकोडर –

उत्तर

26

setTimeout:

$('li').each(function(indexInArray){ 
    var data = $(this).text(); 
    setTimeout(function() { 
     requestFunction(data, function(status){ 
      if (status == 'OK') do stuff... 
     }); 
    }, indexInArray * 500); 
}); 

अगर आप इन तत्वों से अधिक पाश, हम समय समाप्ति वरना सभी अनुरोध को बढ़ाने के लिए एक ही समय में सक्रिय होगा नहीं तो देरी चाहते हैं, लेकिन केवल हमारे 500 एमएस टाइमआउट के बाद।

  • समय प्रारंभ: 0 एमएस
  • पहले अनुरोध: 0 एमएस (500 * 0)
  • दूसरा अनुरोध: 500 एमएस (500 * 1)
  • तीसरा अनुरोध: 1000 एमएस (500 * 2)
+0

क्या ऐरे होगा? मेरा मतलब है "indexInArray"। –

+0

ओह, मैन, आप बस "प्रत्येक (फ़ंक्शन (* इंडेक्सइनएरे *) {" कोड का यह हिस्सा लिखना भूल जाते हैं। मुझे jQ.each फ़ंक्शन में अनुक्रमणिका के बारे में पता है। इसलिए, अब मैं आपको अच्छी तरह समझता हूं। धन्यवाद। कोशिश करेंगे यह बाहर। –

+0

@ एक्स, हाँ, मैंने इसे गलत टाइप किया था। मुझे बताएं कि यह कैसे जाता है – Joe

2

यदि आप अपने भीतर AJAX कॉल कर रहे हैं each लूप तो आप अजाक्स अनुरोधों को सिंक्रोनिक रूप से चलाने के लिए चाहते हैं।

ऐसा करने के लिए आप false पर AJAX अनुरोध की async संपत्ति सेट कर सकते हैं।

वैकल्पिक रूप से आप requestFunction के लिए कॉलबैक को लागू करने के लिए देख सकते हैं। यह आपकी विधि वापस लौटने के बाद कोड चलाने की अनुमति देगा और किसी भी टाइमआउट आदि की आवश्यकता को अस्वीकार कर देगा।

एक कॉलबैक मूल रूप से एक विधि है जो आपके कोड के अंत में निष्पादित हो जाती है। आप मूल रूप से अपने फ़ंक्शन को बताते हैं, यहां एक और फ़ंक्शन है जिसे मैं चाहता हूं कि आप अपना काम पूरा करने के बाद कॉल करें।

+0

समझ में नहीं आता, सोरी। –

+0

मैं "अनुरोध समारोह" के स्रोत को पढ़ने का प्रयास नहीं कर सकता। मैं सिर्फ कॉल के बीच कुछ देरी कर सकता हूं। –

+0

आपको कॉल के बीच देरी की आवश्यकता क्यों है? कृपया –

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