मुझे आश्चर्य है कि यह कोड क्लाइंट पर लोड करने जा रहा है क्योंकि टाइमआउट इतना लंबा है?सेटटाइमआउट() प्रदर्शन को प्रभावित करता है
//and update this again in a bit
setTimeout(function() {
updateWeather(lat,lng);
}, 60000);
मुझे आश्चर्य है कि यह कोड क्लाइंट पर लोड करने जा रहा है क्योंकि टाइमआउट इतना लंबा है?सेटटाइमआउट() प्रदर्शन को प्रभावित करता है
//and update this again in a bit
setTimeout(function() {
updateWeather(lat,lng);
}, 60000);
ऐसा नहीं है कि अकेले कोड है। प्रणाली उस एक मिनट के लिए निष्क्रिय है। जब तक अपडेटवेदर के पास गंभीर प्रदर्शन समस्याएं नहीं होती हैं और अंतराल कम होता है, तो सेटटाइमआउट एक उत्पाद नहीं होगा (और मेरा मानना है कि आपका मतलब है अंतराल, आवर्ती चेक के लिए सेटटाइमआउट नहीं)
आपने अपना जवाब चुना क्योंकि आपने सेट इंटरवल का उल्लेख किया है - मुझे लगता है कि मुझे इस मामले में setInterval का उपयोग करना चाहिए, क्योंकि यह नमूना कोड वास्तव में फ़ंक्शन के अंत में अपडेट के अंदर हीदर फ़ंक्शन के अंदर है। क्या यह एक खराब idéa है, क्या setTimeout पर setInterval का उपयोग करने में कोई प्रदर्शन सुधार है या वे वही हैं, क्या अंतराल केवल इस आसान कॉल को करने का एक आसान तरीका है जो मैं करता हूं? –
मैंने इसे स्वयं बेंचमार्क नहीं किया है, लेकिन लालित्य के मामले में, सेट इंटरवलल अच्छा है। मैं अब एक बेंचमार्क चलाऊंगा। – bobbybee
अपने प्रश्न का उत्तर पर निर्भर करता है:
एक स्वसंपूर्ण setTimeout हैं पर अमल करते हैं ब्राउज़र को चोट नहीं पहुंचाओ; हालांकि, यदि आप बार-बार वही काम कर रहे हैं, तो इससे कोई फर्क पड़ता है।
अधिक अंतर्दृष्टि के लिए निम्नलिखित वेबसाइट पर एक नज़र ...
60 सेकंड टाइमर जादू द्वारा लागू किया गया है ओएस में: यह मूल रूप से इंतजार कर रहे 60 सेकंड के दौरान कोई CPU लोड नहीं जोड़ता है।
मुझे लगता है कि updateWeather()
बाहरी संसाधन मतदान कर रहा है, इसलिए आपके प्रश्न का उत्तर सरल है "नहीं, यह ठीक है"। (जैसा कि मौसम नहीं बदलता है, अक्सर, मैं इसे 5 मिनट बना देता हूं, बैटरी जीवन पर नीचे टिप्पणी देखें।) (इससे भी बेहतर: देखें कि मौसम डेटा प्रदाता आपको एक फ़ील्ड देता है जब अगला अपडेट होगा हो सकता है, और एक setTimeout
पर आधारित है कि का उपयोग करें।)
अन्य स्थितियों में, उदाहरण के लिए यदि आप उन 60 सेकंड के लिए डेटा के कुछ प्रकार का संग्रह किया गया है, और फिर जाने के लिए और एक ही बार में इसे संसाधित के लिए, यह एक चोटी का कारण बन सकता भारी भार का। जो उपयोगकर्ता द्वारा देखा जा सकता है (उदाहरण के लिए सभी एनिमेशन हर 60 सेकंड में एक बार झटकेदार होते हैं)। उस स्थिति में 5 सेकंड टाइमर का उपयोग करना बेहतर होता है, और एक समय में 5 सेकंड के डेटा को संसाधित करता है।
इसके विपरीत, यदि आप किसी मोबाइल डिवाइस पर नेटवर्क का उपयोग कर रहे हैं, तो आपको बैटरी जीवन पर विचार करना होगा: जागने-और-खोज-एक-कनेक्शन हावी हो सकता है। तो 60 सेकंड से 120 सेकंड तक मतदान समय बढ़ाकर सचमुच बैटरी जीवन दोगुना हो सकता है। इल्या ग्रिगोरिक ... अपनी पुस्तक, उच्च निष्पादन ब्राउज़र नेटवर्किंग, http://shop.oreilly.com/product/0636920028048.do में इस पर एक बहुत अच्छा अध्याय है यहाँ यह है: http://chimera.labs.oreilly.com/books/1230000000545/ch08.html#ELIMINATE_POLLING
एक कम समय के लिए कुछ नहीं कर से एक मिनट के कारण अधिक लोड के लिए ध्यान देने योग्य बात क्यों कर रहे हैं? ;-) – RobG
नहीं, यह नहीं है। हालांकि, एक बहुत छोटा समय हो सकता है: http://stackoverflow.com/a/18832977/1768303 – Noseratio
कोई महत्वपूर्ण प्रभाव नहीं, 'setTimeout' किसी ईवेंट लूप में चलता है, यह निष्पादन को अवरुद्ध या नुकसान नहीं पहुंचाता है। –