तो, मैं एक मस्तिष्क टीज़र के बारे में सोच रहा हूं - अगर मेरे पास कोई बड़ी वस्तु थी तो मुझे किसी कारण से नोड जेएस में फिर से चलना पड़ा, और जब मैं ऐसा कर रहा था तो ईवेंट लूप को अवरुद्ध नहीं करना चाहता था?जावास्क्रिप्ट में लूप के लिए गैर-अवरोधन लिखने का सबसे साफ तरीका क्या है?
यहाँ एक ऑफ-द-टॉप ऑफ मेरे सिर उदाहरण है, मुझे यकीन है कि यह अधिक स्वच्छ हो सकता है कर रहा हूँ:
var forin = function(obj,callback){
var keys = Object.keys(obj),
index = 0,
interval = setInterval(function(){
if(index < keys.length){
callback(keys[index],obj[keys[index]],obj);
} else {
clearInterval(interval);
}
index ++;
},0);
}
जबकि मुझे यकीन है कि वहाँ यह गंदा होने के लिए अन्य कारण हैं हूँ, यह लूप के लिए नियमित से धीमा निष्पादित करेगा, क्योंकि setInterval 0 वास्तव में हर 0 एमएस निष्पादित नहीं करता है, लेकिन मुझे यकीन नहीं है कि बहुत तेज प्रक्रिया के साथ लूप कैसे बनाना है .nextTick।
मेरे परीक्षणों में, मैंने पाया कि इस उदाहरण में 7 एमएस चलने लगते हैं, क्योंकि लूप के लिए देशी (हैऑनप्रॉपर्टी() चेक के साथ, एक ही जानकारी लॉगिंग), जो 4 एमएस लेता है।
तो, साफ/तेज़ तरीका यह एक ही कोड का उपयोग कर Node.js लिखने के लिए क्या है?
क्षमा करें- प्रश्न – kennebec
क्यों गलत करें? यह दुर्व्यवहार है। ऐसा मत करो – Raynos
@ रेनोस - यह दुर्व्यवहार क्यों है? यदि मैं लूप के लिए मूल के साथ एक विशाल वस्तु के माध्यम से पुनरावृत्ति करता हूं, तो जब तक लूप निष्पादित होता है तब तक मैं थ्रेड को अवरुद्ध करता हूं। यह मुझे दुर्व्यवहार की तरह लगता है, अगर मैं हर उपयोगकर्ता की सेवा के लिए 25ms लेता हूं, जो एक विशाल स्केलिंग मुद्दे में अनुवाद कर सकता है। – Jesse