2010-09-28 7 views
6

मैं node.js सीख रहा हूं और उदाहरण के अधिकांश उदाहरण सरल उदाहरणों से निपट रहे हैं। मैं वास्तविक दुनिया जटिल प्रणालियों के निर्माण में और अधिक अनुमान लगा रहा हूं कि नोड.जेएस का इवेंट आधारित मॉडल वास्तविक एप्लिकेशन के सभी उपयोग मामलों को कैसे संभाल सकता है।क्या node.js में टाइमआउट घटनाओं के लिए कोई सामान्य तंत्र है?

मैं जो सामान्य पैटर्न लागू करना चाहता हूं, वह समय-समय पर निष्पादन को अवरुद्ध करने देता है यदि यह कुछ समय-समय पर नहीं होता है। उदाहरण के लिए यदि डेटाबेस क्वेरी निष्पादित करने में 30 सेकंड से अधिक समय लगता है, तो यह कुछ एप्लिकेशन के लिए बहुत अधिक हो सकता है। या यदि फ़ाइल पढ़ने के लिए 10 सेकंड से अधिक समय लगता है।

मेरे लिए टाइमआउट के साथ आदर्श कार्यक्रम प्रवाह अपवादों के साथ कार्यक्रम प्रवाह के समान होगा। यदि कोई ईवेंट कुछ पूर्वनिर्धारित टाइमआउट सीमा के भीतर नहीं होता है, तो इवेंट श्रोता को ईवेंट लूप से साफ़ कर दिया जाएगा और इसके बजाय टाइमआउट ईवेंट जेनरेट किया जाएगा। इस टाइमआउट घटना में एक वैकल्पिक श्रोता होगा। यदि घटना सामान्य रूप से संभाली जाती है, तो टाइमआउट श्रोता और ईवेंट श्रोता दोनों ईवेंट लूप से साफ़ हो जाते हैं।

क्या टाइमआउट हैंडलिंग और समयबद्ध प्रक्रियाओं को साफ करने के लिए कोई सामान्य तंत्र है? मुझे पता है कि सॉकेट जैसे टाइमआउट पैरामीटर के कुछ प्रकार हैं लेकिन यह एक सामान्य तंत्र नहीं है जो सभी घटनाओं पर लागू होता है।

उत्तर

1

इस समय ऐसा कुछ भी नहीं है (जिसे मैं जानता हूं, लेकिन मुझे सब कुछ पता नहीं है)।

एकमात्र चीज जिसे मैं सोच सकता हूं वह यह है कि आप इसे किसी भी तरह रीसेट कर सकते हैं। मैंने नीचे एक उदाहरण दिया है लेकिन मुझे लगता है कि इसमें कुछ गुंजाइश समस्याएं हो सकती हैं। यद्यपि हल करने योग्य होना चाहिए।

var to 
function cb() { 
    clearTimeout(to) 
    // do stuff 
} 
function cbcb() { 
    cb() 
} 
function cancel() { 
    cb = function() {} // notice empty 
} 
fs.doSomethingAsync(file, cbcb) 
to = setTimeout(cancel, 10000) 
संबंधित मुद्दे