दिलचस्प पोस्ट
क्या ऑटो-कार्यान्वित गुणों के पीछे बैकिंग फ़ील्ड का उपयोग करना संभव है? एंड्रॉइड 2.2.1, 2.3, 2.0 में टुकड़े। क्या यह संभव है? जावा के यूनरी प्लस ऑपरेटर का क्या उद्देश्य है? फ़ंक्शन का प्रयोग करके दो तिथियों के बीच की तारीखों की एक सूची प्राप्त करें एंड्रॉइड पर नेटवर्क कनेक्शन का पता लगाएं एंड्रॉइड वेबदृश्य पोस्ट एएसपी.नेट एमवीसी 404 त्रुटि हैंडलिंग MySQL> तालिका मौजूद नहीं है लेकिन यह (या यह चाहिए) GoogleMaps पृष्ठ लोड पर लोड नहीं करता क्लॉज विकल्प में तैयार किए गए स्टेटमेंट? क्रोम में जावास्क्रिप्ट के साथ कोई टैब केंद्रित है या नहीं, यह कैसे पता लगा सकता है? रेट्रोफ़िट का उपयोग करते हुए जीएसओएन के साथ नेस्टेड जेएसएएन ऑब्जेक्ट प्राप्त करें स्कला में विधि और फ़ंक्शन के बीच अंतर एक डेटाबेस के साथ रीसाइक्लिव्यू का उपयोग करना क्या .नेट संग्रह सबसे तेज़ खोज प्रदान करता है

बड़ा सेट मिटाने के लिए टाइमटाइम () "ब्रेक" क्यों करता है?

सेट अप करने के लिए एक बड़े मिलिसेकंड मान को पास करते समय मुझे कुछ अप्रत्याशित व्यवहार के लिए आया था setTimeout() उदाहरण के लिए,

 setTimeout(some_callback, Number.MAX_VALUE); 

तथा

 setTimeout(some_callback, Infinity); 

दोनों के कारण some_callback को लगभग तुरंत चलाया जा सकता है, जैसे कि मैं देरी के रूप में बड़ी संख्या के बजाय 0 पारित करता हूं।

ऐसा क्यों होता है?

वेब के समाधान से एकत्रित समाधान "बड़ा सेट मिटाने के लिए टाइमटाइम () "ब्रेक" क्यों करता है?"

यह सेट-टाइमआउट सेट करने के कारण देरी को स्टोर करने के लिए 32 बिट इंट का उपयोग करता है, जिससे अधिकतम मूल्य की अनुमति होगी

 2147483647 

अगर तुम कोशिश करो

 2147483648 

आप अपनी समस्या होने वाली हो

मैं केवल अनुमान लगा सकता हूं कि यह जेएस इंजन में आंतरिक अपवाद के कुछ फार्म का कारण बना रहा है और फ़ंक्शन को बिना किसी जगह की बजाय तुरंत आग लगने के कारण।

यहां कुछ स्पष्टीकरण: http://closure-library.googlecode.com/svn/docs/closure_goog_timer_timer.js.source.html

टाइम-आउट मूल्यों को हस्ताक्षरित 32-बिट पूर्णांक में फिट करने के लिए बहुत बड़ा है, एफएफ, सफारी, और क्रोम में ओवरफ्लो का कारण हो सकता है, जिसके परिणामस्वरूप समय-समय पर तुरंत ही अनुसूचित किया जा रहा है यह केवल इन समय-सारिाओं को शेड्यूल करने के लिए अधिक समझ में आता है, चूंकि 24.8 दिनों के लिए ब्राउज़र के खुले रहने के लिए उचित उम्मीद से परे है।

आप उपयोग कर सकते हैं:

 function runAtDate(date, func) { var now = (new Date()).getTime(); var then = date.getTime(); var diff = Math.max((then - now), 0); if (diff > 0x7FFFFFFF) //setTimeout limit is MAX_INT32=(2^31-1) setTimeout(function() {runAtDate(date, func);}, 0x7FFFFFFF); else setTimeout(func, diff); } 
 Number.MAX_VALUE 

वास्तव में एक पूर्णांक नहीं है सेट टाइमआउट के लिए अधिकतम स्वीकार्य मान 2 ^ 31 या 2 ^ 32 की संभावना है प्रयत्न

 parseInt(Number.MAX_VALUE) 

और आपको 1.7976931348623157e + 308 के बजाए 1 वापस मिलता है।