में पाश के लिए एक के भीतर एक अतुल्यकालिक समारोह कॉलिंग मैं निम्नलिखित कोड है:जावास्क्रिप्ट
for(var i = 0; i < list.length; i++){
mc_cli.get(list[i], function(err, response) {
do_something(i);
});
}
mc_cli
एक memcached डेटाबेस से संबंध है। जैसा कि आप कल्पना कर सकते हैं, कॉलबैक फ़ंक्शन एसिंक्रोनस है, इस प्रकार जब लूप पहले ही समाप्त हो जाता है तो इसे निष्पादित किया जा सकता है। साथ ही, इस तरह से कॉल करते समय do_something(i)
यह हमेशा लूप के अंतिम मान का उपयोग करता है।
मैं इस तरह से
do_something((function(x){return x})(i))
में एक बंद करने के साथ करने की कोशिश की लेकिन जाहिरा तौर पर यह फिर से हमेशा पाश के लिए के सूचकांक का अंतिम मान उपयोग कर रहा है।
मैं भी तो जैसे पाश के लिए पहले एक समारोह की घोषणा करने की कोशिश की:
var create_closure = function(i) {
return function() {
return i;
}
}
और फिर बुला
do_something(create_closure(i)())
लेकिन फिर से सफलता नहीं मिली, वापसी मान हमेशा के अंतिम मूल्य जा रहा है के साथ पाश के लिए।
क्या कोई मुझे बता सकता है कि मैं बंद होने के साथ क्या गलत कर रहा हूं? मैंने सोचा कि मैं उन्हें समझ गया लेकिन मुझे नहीं पता कि यह क्यों काम नहीं कर रहा है।
बहुत बडी प्रत्येक चक्र में पाश बंद हो जाएगा! इस कोड ने मुझे बचाया !!! : डी – DDave
@ जोसेफ आप तर्क महान लगता है। क्या आप मेरे इस हिस्से को समझा सकते हैं कृपया "इटरेशन का अपना दायरा होगा"? –