node.js - NodeJS: for loop and promises -


एसिंक्रोनस प्रोग्रामिंग सिंक्रोनस प्रोग्रामिंग से बहुत अधिक कठिन है।

नोडजेएस का उपयोग करना, मैं निम्नलिखित कोशिश कर रहा हूं : <पूर्व> के लिए (var i = 0; i & lt; 10; i ++) {someFunction ()। तब (function () {// Do stuff}); }

लेकिन मैं चाहता हूं कि लूप केवल तभी जारी रखे जब डू स्टफ भाग पूरा हो।

कोई भी विचार यह कैसे आसानी से प्राप्त किया जा सकता है ...?

धन्यवाद!

असेंक प्रोग्रामिंग भ्रमित हो सकती है, लेकिन अधिकांश भ्रम समाप्त हो सकते हैं यदि आप कॉलबैक और जैसी चीज़ों को ध्यान में रखते हैं तो बाद में चलाएगा, जो कोड ब्लॉक में शामिल हैं वे पहले ही समाप्त हो चुके हैं

वादा पुस्तकालयों, async मॉड्यूल, प्रोग्राम के प्रवाह पर अधिक नियंत्रण पाने के सभी प्रयास हैं। यहां समझाए गए विभिन्न दृष्टिकोण हैं, जो वास्तव में एक ही समस्या के विभिन्न वैकल्पिक समाधान देखकर मुझे चीजों को समझने में मदद करते हैं।

अन्य दो उत्तरों में Q.all () का उल्लेख है। यह अच्छी तरह से काम करता है, अगर आपके पास पहले ही वादों की एक सरणी है

यदि आपके पास मूल्यों, या वादों की एक सरणी है, तो एक और पुस्तकालय है जो इसे bluebird नामक और भी आसान बनाता है। इसकी एक विधि है .map () जिसे आप एक सरणी के साथ एक वायर्ड श्रृंखला शुरू करने के लिए उपयोग कर सकते हैं।

इस दृष्टिकोण से आपको एसिंक्रोनस, वायदा-रिटर्निंग फ़ंक्शन को कॉल करने की ज़रूरत नहीं है, फिर से दिए गए वादे को एक सरणी में संग्रहीत करें, फिर उस सरणी को Q.all पर पास करें। यह आपको कुछ कदम बचाता है।

तो, मान लें कि आपके पास सिर्फ मान हैं:

var आइटम = [0,1,2,3,4,5, 6,7,8,9];

आप निम्न की तरह कुछ कर सकते हैं:

  Promise.map (आइटम, फ़ंक्शन (आइटम) {वापसी PerformAsyncOperation (item);}, {concurrency: n})। तब (फ़ंक्शन (allResults) {// 'allResults' में अब सभी के एक सरणी शामिल है / / 'performAsyncOperation'} के परिणाम)   

नोट : अपेक्षित रूप से कार्य करने के लिए, performAsyncOperation को वादा वापस करना होगा

इसके अलावा ध्यान दें तीसरा तर्क से Promise.map () : {concurrency: n} । निर्दिष्ट किए गए इस विकल्प के साथ, ब्लूबर्ड केवल एक ही समय में n परिचालन की अनुमति देगा, जो कि उपयोगी हो सकता है यदि आपके पास सिस्टम पर भारी मात्रा में काम करने की प्रक्रिया होती है जो सिस्टम को डूब जाती है एक बार में (नेटवर्क कनेक्शन, फ़ाइल हाथ, आदि)

अंतिम नोट: ये है। यह बहुत सारे उदाहरणों के साथ बहुत अच्छी तरह से लिखा गया है, और यह पता लगाने का एक शानदार तरीका है कि कैसे वादे आपके जीवन को आसान बनाने में सहायता कर सकते हैं।

आशा है कि यह मदद करता है !!!

Comments

Popular posts from this blog

java - ImportError: No module named py4j.java_gateway -

python - Receiving "KeyError" after decoding json result from url -

.net - Creating a new Queue Manager and Queue in Websphere MQ (using C#) -