डिफ़ॉल्ट नेवला .find()
निश्चित रूप से सभी परिणामों को "सरणी" के रूप में लौटाता है, ताकि हमेशा बड़े परिणामों के साथ स्मृति का उपयोग किया जा सके, इसलिए यह "स्ट्रीम" इंटरफ़ेस छोड़ देता है।
यहां मूल समस्या यह है कि आप एक स्ट्रीम का उपयोग कर रहे हैं इंटरफ़ेस (जैसा कि यह मूल नोड स्ट्रीम से विरासत में मिला है) प्रत्येक डेटा ईवेंट "फ़ायर" और संबंधित ईवेंट हैंडलर को लगातार निष्पादित किया जाता है।
इसका मतलब यह है कि एक "स्ट्रीम" के साथ भी ईवेंट हैंडलर में आपके बाद की कार्रवाइयां "स्टैकिंग" कर रही हैं, कम से कम खपत करने वाली बहुत सारी मेमोरी पर और संभावित रूप से कॉल स्टैक को खा रही हैं यदि वहां आगे एसिंक्रोनस प्रक्रियाएं निकाल दी जा रही हैं।पी>
तो सबसे अच्छी बात यह है कि आप अपनी स्ट्रीम प्रोसेसिंग में कार्रवाइयों को "सीमित" करना शुरू कर सकते हैं। यह .pause()
को कॉल करने जितना आसान है।
विधि:
var stream = model.find().stream(); // however you call
stream.on("data",function() {
// call pause on entry
stream.pause();
// do processing
stream.resume(); // then resume when done
});
तो .pause()
स्ट्रीम में ईवेंट उत्सर्जित होने से रोकता है और यह आपके ईवेंट हैंडलर की कार्रवाइयों को जारी रखने से पहले पूरा करने की अनुमति देता है ताकि वे सभी एक साथ नहीं आ सकें।
जब आपका हैंडलिंग कोड पूरा हो जाए, तो आप .resume()
पर कॉल करें।
, या तो सीधे ब्लॉक के भीतर जैसा कि यहां दिखाया गया है ब्लॉक के भीतर किए गए किसी भी एसिंक्रोनस क्रिया के कॉलबैक ब्लॉक के भीतर। ध्यान दें कि एसिंक्स कार्रवाइयों के लिए समान नियम लागू होते हैं, और आपके द्वारा फिर से शुरू करने के लिए कॉल करने से पहले "सभी" को पूर्णता का संकेत देना चाहिए।
ऐसे अन्य अनुकूलन हैं जिन्हें भी लागू किया जा सकता है, और इसके कुछ समानांतर निष्पादन के साथ आपको अधिक प्रदर्शन प्राप्त करने में सहायता के लिए "क्यू प्रोसेसिंग" या "एसिंक फ्लो कंट्रोल" उपलब्ध मॉड्यूल देखने के लिए अच्छा हो सकता है।
लेकिन मूल रूप से सोचें .pause()
फिर प्रक्रिया करें और .resume()
अपने प्रसंस्करण में बहुत सारी मेमोरी खाने से बचने के लिए जारी रखने के लिए।
साथ ही, अपने "आउटपुट" से अवगत रहें और इसी तरह प्रतिक्रिया के लिए कुछ बनाते समय फिर से "स्ट्रीम" का उपयोग करने का प्रयास करें। यह सब कुछ नहीं होगा यदि आप जो काम कर रहे हैं वह वास्तव में स्मृति में एक और चर का निर्माण कर रहा है, तो यह इसके बारे में जागरूक होने में मदद करता है।