मुझे कुछ बहुत ही अजीब व्यवहार चल रहा है। मेरे पास निम्न JQuery है:क्या जेएस डीबगर पूरे जेएस इवेंट लूप को निलंबित करता है?
myElement.fadeOut(100);
किसी प्रकार की दौड़ की स्थिति चल रही है, जैसे कि तत्व छुपा हुआ नहीं है। अगर मैं उस रेखा पर एक डीबगर डालता हूं और कोड के माध्यम से कदम उठाता हूं, तो यह ठीक काम करता है और तत्व बाहर निकलता है और छुपा रहता है। इसे Heisenbug पर कॉल करें।
मेरा प्रश्न दौड़ की स्थिति प्रति से के बारे में नहीं है। मैं जानना चाहता हूं कि जावास्क्रिप्ट रनटाइम की प्रकृति को देखते हुए यह कैसे संभव है। मेरी समझ से निम्नलिखित विधेय सत्य हैं:
- fadeOut() JQuery animate()
- animate() द्वारा कार्यान्वित किया जाता
setTimeout()
कॉल setTimeout()
कार्यक्रम में एक समारोह के निष्पादन की एक श्रृंखला से कार्यान्वित किया जाता है समय पर किसी बिंदु पर एक कतार- जब घटनाएं कतार की शुरुआत तक पहुंच जाती हैं, तो फ़ंक्शन निष्पादित किया जाता है।
- केवल एक ईवेंट लूप है, जो अनुक्रमिक रूप से निष्पादित करता है।
- किसी भी समय दिए गए बिंदु पर, कॉलस्टैक के माध्यम से केवल एक फ़ंक्शन/पथ निष्पादित हो रहा है।
यह देखते हुए कि मैं अपने डीबगर में एक फ़ंक्शन के माध्यम से कदम उठा रहा हूं, निष्पादन निलंबित किया जाना चाहिए और कोई अन्य कार्य निष्पादित नहीं किया जा सकता है।
मैं नहीं देख सकता कि इन परिस्थितियों में दौड़ की स्थिति के लिए यह कैसे संभव है। क्या आप सुझाव दे सकते हैं कि निष्पादन के लिए डीबग किए गए और गैर-डीबग किए गए कोड के बीच अंतर कैसे हो सकता है?
आह आप जानते हैं कि, AJAX लोड क्या है। यह हो सकता है ... – Joe
सफलता या पूर्ण कॉलबैक का उपयोग करें, टाइमआउट नहीं, अगर ऐसा हो रहा है। हमेशा एजेक्स थोड़ा सा लटका सकता है मान लें। –
मैं निश्चित रूप से उस उद्देश्य के लिए एक टाइमआउट का उपयोग नहीं किया था! – Joe