2012-08-13 9 views
5

एक उदाहरण के रूप:jQuery.ready() एक कॉल का इलाज कैसे करता है?

$(function(){ 
    //do stuff 
    $(function(){ 
     //do other stuff 
    }); 
}); 

कोड में लिखा बेशक यह कोई समझ बनाने के लिए लगता है। लेकिन एचटीएमएल तत्वों के साथ काम करने वाली एक प्लगइन .ready() का उपयोग कर सकती है जबकि मुख्य स्क्रिप्ट के पहले से ही तत्व पर निष्पादित किया जा रहा है। JQuery वास्तव में यह कैसे संभालता है? यह स्पष्ट रूप से काम करता है, लेकिन क्या यह कुछ खास करता है?

उत्तर

2

यदि पहले से ही डीओएम शुरू होने के बाद कहा जाता है, तो नया संभाला गया हैंडलर तुरंत निष्पादित किया जाएगा।

इसका मतलब यह है कि जब पहले समारोह निष्पादित किया जाता है, भीतर एक तुरंत

साथ ही निष्पादित किया जाएगा

, jQuery तो आप किसी ईवेंट के लिए कई कार्यों बाध्य करने के लिए अनुमति देता है और यह सब (यह मानते हुए कि कोई भी उन्हें फोन करेगा (इससे पहले कि `.ready()` रिटर्न) _synchronously_ में के रूप में

jQuery(document).ready(function(){ 
     for(i=0;i<1000000;i++); 
     console.log('2'); 
    }); 
console.log('1'); 
+1

यह है "तत्काल": एक एक त्रुटि)

आप पहले से ही भरी हुई पृष्ठ पर क्रियान्वित करते हुए व्यवहार का परीक्षण कर सकते हैं पैदा करता है? – nnnnnn

+0

हां, यह सिंक्रोनस है। आप पहले से लोड किए गए पृष्ठ पर इसे निष्पादित करने का परीक्षण कर सकते हैं: jQuery (दस्तावेज़) .ready (function() {for (i = 0; i <1000000; i ++) {;}; console.log ('2');}); console.log ('1'); –

+0

मुझे यह मिलता है: 'global .ready() स्टार्ट, 0ms; वैश्विक .ready() अंत, 8ms; प्लगइन .ready()() स्टार्ट, 11 एमएमएस; प्लगइन .ready() अंत, 12ms'। नतीजा स्थिर है कि क्या मैं शुरुआत में या वैश्विक के अंत में प्लगइन को कॉल करता हूं। तो प्लगइन के अंदर पहले से ही कॉल पहले ही निष्पादन के बाद ही कतार में दिखता है। पहले से ही इसे कहलाता है – Armatus

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

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