2010-10-20 11 views
5

मैं गूगल जियोकोडर API कॉल करने के लिए कुछ अतिरिक्त पैरामीटर जोड़ने के लिए के रूप में मैं एक पाश में चल रहा हूँ चाहता हूँ में पैरामीटर डिफ़ॉल्ट है, लेकिन यकीन है कि उनकी गुमनाम समारोह को बंद करने मापदंडों संलग्न करने का तरीका नहीं कर रहा हूँ जिसमें पहले से ही डिफ़ॉल्ट पैरामीटर हैं जो एपीआई को कॉल द्वारा पास किए जाते हैं।अटैच किया जा रहा मानकों अनाम प्रक्रियाएं

उदाहरण के लिए:

for(var i = 0; i < 5; i++) { 
    geocoder.geocode({'address': address}, function(results, status) { 
     // Geocoder stuff here 
    }); 
} 

मैं() अज्ञात फ़ंक्शन, पारित कर दिया geocoder.geocode में मैं के मूल्य का उपयोग करने में सक्षम होना चाहते हैं, लेकिन अगर मैं एक बंद उदाहरण के लिए लाइन 4 पर }(i)); को उपयोग करने का है कि पहले पैरामीटर को प्रतिस्थापित करेगा जो जिओकोडर को तोड़ देगा।

वहाँ एक रास्ता मैं बंद का उपयोग कर सकते, या बिल्कुल भी गुमनाम समारोह में मैं का मान पास है?

प्रभावी ढंग से मुझे क्या करना चाहते हैं:

geocoder.geocode({'address': address}, function(results, status, i) { 
    alert(i); // 0, 1, 2, 3, 4 
}(i)); 

लेकिन :-) काम कर

उत्तर

11

आप आप गुमनाम समारोह से सीधे i उपयोग कर सकते हैं (बंद) के माध्यम से, लेकिन आप इसे कब्जा करने के लिए इतना है कि geocode की प्रत्येक कॉल अपनी एक प्रतिलिपि हो जाता है की जरूरत है। सामान्य रूप से जावास्क्रिप्ट में, एक और फ़ंक्शन जोड़ना चाल करेगा।

for(var iter = 0; iter < 5; iter++) { 
    (function(i) { 
     geocoder.geocode({'address': address}, function(results, status) { 
      // Geocoder stuff here 
      // you can freely access i here 
     }); 
    })(iter); 
} 
+0

एक आसान समाधान भी! जल्दी ही – WheresWardy

+1

पोस्ट किया है चाहिए मैं कहना है कि यह 'बाहरी गुंजाइश और भीतरी दायरे में मैं' घ होने भ्रामक था जा रहा था, लेकिन मैं देख रहा हूँ कि आप तय कर लिया है कि अब तो मैं तुम्हें दूँगा :) – Skilldrick

+0

मेरा सुझाव यह है कि उदाहरण के लिए सबसे अच्छा है, क्योंकि दूसरों (वे सरल कर रहे हैं) मेरे मामले में काम नहीं करते: जियोकोडर कॉलबैक फ़ंक्शन के अंदर मैं हमेशा पाश में पिछले एक है। मुझे लगता है, यह ब्राउज़र की असीमित प्रकृति पर निर्भर करता है। लेकिन इस सवाल का जवाब पूरी तरह से काम किया! +1! – Igor

3
function geoOuter(i) { 
    geocoder.geocode({'address': address}, function(results, status) { 
     // Geocoder stuff here 
     // This has access to i in the outer function, which will be bound to 
     // a different value of i for each iteration of the loop 
    }); 
} 

for(var i = 0; i < 5; i++) { 
    geoOuter(i); 
} 

oughta यह कर ...

+0

इस तरह के एक सरल उत्तर: मैं यह स्पष्ट करने के बाहरी i चर नाम दिया। बहुत बहुत धन्यवाद :-) – WheresWardy

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