अपडेट : Chrome 58+ ने इन और अन्य डीबग संदेशों को डिफ़ॉल्ट रूप से छिपाया। उन्हें प्रदर्शित करने के लिए 'जानकारी' के बगल वाले तीर पर क्लिक करें और 'वर्बोज़' चुनें।
Chrome 57 डिफ़ॉल्ट रूप से 'छिपाने के उल्लंघन' पर बदल गया। उन्हें वापस चालू करने के लिए आपको फ़िल्टर सक्षम करने और 'छिपाने के उल्लंघन' बॉक्स को अनचेक करने की आवश्यकता है।
अचानक यह तब प्रकट होता है जब कोई अन्य परियोजना में शामिल होता है
मुझे लगता है कि यह अधिक संभावना है कि आपने Chrome 56 को अपडेट किया है। यह चेतावनी एक अद्भुत नई सुविधा है, मेरी राय में, कृपया इसे बंद कर दें यदि आप हताश हैं और आपका मूल्यांकनकर्ता आपसे दूर हो जाएगा। अन्य ब्राउज़र में अंतर्निहित समस्याएँ हैं, लेकिन ब्राउज़र आपको यह नहीं बता रहे हैं कि वहाँ कोई समस्या है। क्रोमियम टिकट यहाँ है, लेकिन वास्तव में इस पर कोई दिलचस्प चर्चा नहीं है।
ये संदेश त्रुटियों के बजाय चेतावनी हैं क्योंकि यह वास्तव में बड़ी समस्याओं का कारण नहीं है। यह फ्रेम को गिराए जाने का कारण बन सकता है या अन्यथा कम चिकनी अनुभव का कारण बन सकता है।
हालांकि वे आपके आवेदन की गुणवत्ता में सुधार करने के लिए जांच और फिक्सिंग के लायक हैं। ऐसा करने का तरीका यह है कि संदेश किन परिस्थितियों में दिखाई देते हैं और इस मुद्दे को कम करने के लिए प्रदर्शन परीक्षण कर रहे हैं। प्रदर्शन परीक्षण शुरू करने का सबसे सरल तरीका कुछ कोड सम्मिलित करना है:
function someMethodIThinkMightBeSlow() {
const startTime = performance.now();
// Do the normal stuff for this function
const duration = performance.now() - startTime;
console.log(`someMethodIThinkMightBeSlow took ${duration}ms`);
}
यदि आप अधिक उन्नत प्राप्त करना चाहते हैं, तो आप क्रोम के प्रोफाइलर का उपयोग भी कर सकते हैं , या इस तरह की बेंचमार्किंग लाइब्रेरी का उपयोग कर सकते हैं ।
एक बार जब आपको कुछ ऐसा कोड मिल जाता है, जिसमें लंबा समय लगता है (50ms क्रोम की सीमा है), तो आपके पास कुछ विकल्प हैं:
- उस कार्य के कुछ / सभी को काट दें जो अनावश्यक हो सकता है
- उसी कार्य को तेजी से करने का तरीका जानें
- कोड को कई अतुल्यकालिक चरणों में विभाजित करें
(1) और (2) मुश्किल या असंभव हो सकता है, लेकिन यह कभी-कभी वास्तव में आसान होता है और आपके पहले प्रयास होने चाहिए। यदि आवश्यक हो, तो ऐसा करना हमेशा संभव होना चाहिए (3)। ऐसा करने के लिए आप कुछ का उपयोग करेंगे:
setTimeout(functionToRunVerySoonButNotNow);
या
// This one is not available natively in IE, but there are polyfills available.
Promise.resolve().then(functionToRunVerySoonButNotNow);
आप यहां जावास्क्रिप्ट की अतुल्यकालिक प्रकृति के बारे में अधिक पढ़ सकते हैं ।