javascript - SetTimeout Node.JS में कैसे काम करता है?



2 Answers

गैर-अवरोधन का विचार यह है कि लूप पुनरावृत्तियों त्वरित हैं। तो प्रत्येक टिक के लिए पुनरावृत्ति करने के लिए पर्याप्त समय लेना चाहिए कि सेटटाइमआउट उचित परिशुद्धता के भीतर सटीक होगा (शायद <100 एमएस या उससे भी कम)।

सिद्धांत में हालांकि आप सही हैं। अगर मैं एक आवेदन लिखता हूं और टिक को ब्लॉक करता हूं, तो सेटटाइमआउट में देरी होगी। तो जवाब देने के लिए आप सवाल कर रहे हैं, कौन समय पर सेटटाइमआउट निष्पादित कर सकता है? आप, गैर-अवरुद्ध कोड लिखकर, शुद्धता की लगभग किसी भी उचित डिग्री तक सटीकता की डिग्री को नियंत्रित कर सकते हैं।

जब तक जावास्क्रिप्ट कोड निष्पादन (वेब-श्रमिकों को छोड़कर) की तरह "एकल-थ्रेडेड" होता है, तब भी यह हमेशा होता है। ज्यादातर मामलों में एकल-थ्रेडेड प्रकृति एक बड़ी सरलीकरण है, लेकिन गैर-अवरुद्ध मुहावरे को सफल होने की आवश्यकता है।

इस कोड को या तो अपने ब्राउज़र में या नोड में आज़माएं, और आप देखेंगे कि सटीकता की कोई गारंटी नहीं है, इसके विपरीत, सेटटाइम बहुत देर हो जाएगी:

var start = Date.now();

// expecting something close to 500
setTimeout(function(){ console.log(Date.now() - start); }, 500);

// fiddle with the number of iterations depending on how quick your machine is
for(var i=0; i<5000000; ++i){}

जब तक दुभाषिया लूप को दूर नहीं करता है (जो यह क्रोम पर नहीं है), तो आपको हजारों में कुछ मिल जाएगा। लूप को हटाएं और आप नाक पर 500 देखेंगे ...

javascript node.js serverside-javascript

मुझे लगता है कि इसे निष्पादित करने के बाद यह कतार पर है, लेकिन कतार में कोई आश्वासन है कि यह X मिलीसेकंड के ठीक बाद आ जाएगा? या कतार में अन्य भारी कार्य अधिक देरी होगी?




सेटटाइमआउट एक प्रकार का थ्रेड है , इसमें किसी दिए गए समय के लिए एक ऑपरेशन होता है और निष्पादित होता है।

setTimeout(function,time_in_mills);

यहां पहली तर्क एक फ़ंक्शन प्रकार होना चाहिए, उदाहरण के रूप में यदि आप 3 सेकंड के बाद आपको नाम प्रिंट करना चाहते हैं, तो कोड नीचे कुछ जैसा होना चाहिए।

setTimeout(function(){console.log('your name')},3000);

याद रखने के लिए महत्वपूर्ण poitn है, आप सेटटाइमआउट विधि का उपयोग करके कभी भी क्या करना चाहते हैं, इसे एक फ़ंक्शन के अंदर करें। अगर आप कुछ पैरामीटर को पार्स करके कुछ अन्य विधि कॉल करना चाहते हैं, तो आपका कोड नीचे जैसा दिखना चाहिए,

setTimeout(function(){yourOtherMethod(parameter);},3000);

खुश nodejs कोडिंग :)




Related