में कैसे कार्यान्वित किया गया है, मैं सोच रहा था कि कोई भी जानता है कि कैसे setTimeout node.js. में लागू किया गया है। मेरा मानना है कि मैंने कहीं पढ़ा है कि यह वी 8 का हिस्सा नहीं है। मैंने जल्दी ही कार्यान्वयन को खोजने की कोशिश की, लेकिन इसे स्रोत (बीआईजी) में नहीं मिला। उदाहरण के लिए यह timers.js फ़ाइल मिली, जो कि उदाहरण के लिए timer_wrap.cc से लिंक है। लेकिन ये फाइल पूरी तरह से मेरे सभी सवालों का जवाब नहीं देती हैं।setTimeout को node.js
- क्या वी 8 में
setTimeout
कार्यान्वयन है? मुझे लगता है कि स्रोत से भी जवाब नहीं है। setTimeout
कैसे लागू किया गया है? जावास्क्रिप्ट या देशी या दोनों का संयोजन?var Timer = process.binding('timer_wrap').Timer;`
जोड़ते एकाधिक टाइमर (setTimeout) कैसे पता Node.js पहले निष्पादित करने के लिए जो कार्य करता है: timers.js से मैं दोनों की रेखा के साथ कुछ मान? क्या यह सभी टाइमर को संग्रह (क्रमबद्ध) में जोड़ता है? यदि इसे सॉर्ट किया गया है तो निष्पादन के लिए ओ (1) और ओ (लॉग एन) निष्पादित करने की आवश्यकता वाले टाइमआउट को ढूंढना है? लेकिन फिर timers.js में फिर से मैं उन्हें एक लिंक्डलिस्ट का उपयोग देखता हूँ?
- लेकिन फिर फिर से बहुत सारे टाइमर जोड़ना कोई समस्या नहीं है?
var x = new Array(1000), len = x.length; /** * Returns a random integer between min and max * Using Math.round() will give you a non-uniform distribution! */ function getRandomInt (min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; } var y = 0; for (var i = 0; i < len; i++) { var randomTimeout = getRandomInt(1000, 10000); console.log(i + ', ' + randomTimeout + ', ' + ++y); setTimeout(function() { console.log(arguments); }, randomTimeout, randomTimeout, y); }
आप CPU उपयोग का एक छोटा सा मिलता है, लेकिन वह ज्यादा नहीं:
जब इस स्क्रिप्ट पर कार्य करते?
- मुझे आश्चर्य है कि अगर मैं बेहतर प्रदर्शन प्राप्त करूँगा तो मैं इन सभी कॉलबैक को एक क्रमबद्ध सूची में एक-एक करके लागू कर सकता हूं?
इस उदाहरण में टाइमआउट हमेशा समान होते हैं? 60 सेकंड? – Alfred
तो आप 60 सेकंड में कई चीजें होने की इच्छा रखते हैं, और आप यह पता लगाने की कोशिश कर रहे हैं कि उन सभी चीजों को एक साथ जोड़ना है या प्रत्येक के लिए अलग-अलग सेटटाइम बनाना है? –
कोई खेद नहीं है। आपके द्वारा लिंक किया गया दस्तावेज़ 60 सेकंड देरी है। मेरी देरी कुछ भी हो सकती है और बहुत कुछ! – Alfred