नोडज में सबकुछ गैर-अवरुद्ध है जो अच्छा है, लेकिन मैं कॉलबैक की एक बड़ी घोंसला वाली सूची के बिना दूसरे के बाद एक समारोह होने के बारे में कैसे जाउंगा?नोडजेज़ में "अवरुद्ध" कोड लिखना
उत्तर
आप अपने कॉलबैक घोंसला करते हैं।
एसिंक्रोनस कोड लिखने में कई पैटर्न हैं।
उदाहरण के लिए, इस matrioska-नेस्टेड शैली ...
database.find('foo', function (err, data) {
database.update('foo', 'bar', function (err, data) {
database.delete('bar', function (err, data) {
console.log(data);
});
});
});
... एक क्लीनर में लिखा जा सकता है (लेकिन अधिक शब्द) रास्ता:
var onDelete = function (err, data) {
console.log(data);
},
onUpdate = function (err, data) {
database.delete('bar', onDelete);
},
onFind = function (err, data) {
database.update('foo', 'bar', onUpdate);
};
database.find('foo', onFind);
एक अन्य विकल्प का उपयोग कर रहा है कॉलबैक के सार धारावाहिक और समांतर निष्पादन के लिए एक मॉड्यूल।
जिस पैटर्न के साथ मैं सफल रहा हूं वह एक वादा पुस्तकालय का उपयोग कर रहा है, जैसे ब्लूबर्ड: https: //github.com/petkaantonov/bluebird/blob/master/API.md#promisification और मैं जिस पैटर्न का उपयोग करता हूं (जैसे मासिलम कहते हैं) निम्नलिखित लेख में "रूकी मिस्टके 1" के तहत सुझाए गए एक है: http://pouchdb.com/2015/05/18/we-have-a-problem-with-promises.html –
यह "नोड.जेएस के लिए एक सरल नियंत्रण-प्रवाह लाइब्रेरी है जो समानांतर निष्पादन, धारावाहिक निष्पादन, और दर्द रहित दर्द को निष्क्रिय करता है"।
-1 यह कोई जवाब नहीं है। यह सिर्फ एक लिंक है। – Raynos
+1 यह एक उत्तर है, यद्यपि संक्षेप में, हालांकि मैं नियंत्रण प्रवाह पुस्तकालयों की पूरी सूची को इंगित कर सकता हूं https://github.com/joyent/node/wiki/modules#wiki-async-flow – talentedmrjones
@ खेतान: एक लिंक ठीक है, लेकिन आपको यह जानने के लिए लिंक पर क्लिक करने की आवश्यकता नहीं है कि आपका क्या मतलब है। लिंक का एक संक्षिप्त विवरण यहां होना चाहिए –
आप वास्तव में क्या करना चाहते हैं यह पता लगाना है कि आपके ऑपरेशन क्यों अवरुद्ध हो रहे हैं और उन्हें रिकोड क्यों कर रहे हैं ताकि वे गैर-अवरुद्ध हो जाएं। एक दूसरे पर निर्भरताओं को हटा दें। आपको गैर-अवरुद्ध आईओ के बारे में सोचने के तरीके को बदलने की जरूरत है।
लाइब्रेरी का उपयोग करके आप इस प्रकार के कोड को सिंक्रोनस अवरुद्ध तरीके से चलाने की अनुमति देने के लिए केवल एक खराब क्रैच है।
नोड.जेएस में गैर अवरोधन कोड लिखने के तरीके सीखने से आप काफी बेहतर होंगे क्योंकि यह वही है जो इसे करने के लिए डिज़ाइन किया गया है।
async module एक विशेष रूप से अच्छा समाधान है - इसका उपयोग करके बहुत अधिक घुलनशील घोंसले के साथ बहुत साफ एसिंक्रोनस कोड होता है। आप के माध्यम से इसे प्राप्त कर सकते हैं:
- async.series:
npm install async --save
विशेष रूप से पर एक नज़र डालें यह आप एक के बाद एक को चलाने के लिए कार्यों की एक सूची सेट करने देता है - जहां प्रत्येक में सूची पूरी होने से पहले ही चलती है। हालांकि, अन्य कोड (परिभाषित श्रृंखला के बाहर) अवरुद्ध किए बिना चला सकते हैं।
- async.series: यह async.series के समान है, सूची में प्रत्येक फ़ंक्शन सूची में अगला परिणाम पास करता है, अंतिम परिणाम अंत में परिभाषित कॉलबैक को पास किया जाता है।
हालांकि, async's control flow-specific methods सभी नेस्टेड कॉलबैक सूचियों से बचने के लिए बहुत उपयोगी हैं।
इसके अलावा, यह मदद करता है अगर, here's a jsFiddle I put together जब पुस्तकालय सीखने, async.series के लिए async.waterfall & किसी अन्य के लिए एक (कंसोल खोलें देखने के लिए यह क्या कर रही है) सहित उदाहरण के एक सेट से युक्त।
- 1. कोडिनेटर नोडजेज़
- 2. लेटेक्स दस्तावेज़ में कोड लिखना
- 3. टिप्पणी अवरुद्ध वीबी/वीबीएनईटी कोड
- 4. कॉफीस्क्रिप्ट में प्रोटोविस कोड लिखना संभव है?
- 5. फ़ंक्शन से परिणाम (जावास्क्रिप्ट, नोडजेज़)
- 6. नोडजेज़ में स्वचालित वेब यूआई परीक्षण
- 7. नोडजेज़ लॉग फ़ाइल कहां है?
- 8. ट्विस्ट: कोड को गैर-अवरुद्ध करना
- 9. कोड कवरेज टूल लिखना कैसे शुरू करें?
- 10. मुझे सीएलएस अनुपालन कोड क्यों लिखना चाहिए?
- 11. नए सिरे से लिखना सी # कोड
- 12. जीएडिट में टिप्पणी अवरुद्ध?
- 13. पायथन से सी तक कोड अनुवादक लिखना?
- 14. गैर अवरुद्ध आईओ का उपयोग कर फ़ाइल में कैसे लिखना है?
- 15. क्या कोड लिखने के लिए कोड लिखना संभव है?
- 16. अप्रबंधित कोड में अवरुद्ध प्रबंधित थ्रेड को कैसे समाप्त करें?
- 17. क्या पाइथन में फ़ायरवॉल लिखना संभव है?
- 18. नोडजेज़ में बाइट्स में स्ट्रिंग लंबाई कैसे प्राप्त करें?
- 19. पाइथन में मल्टीप्रोसेसिंग अवरुद्ध
- 20. क्या vb.net या C# में असेंबली कोड लिखना संभव है?
- 21. mpi: अवरुद्ध बनाम गैर-अवरुद्ध
- 22. फ़ाइल में JSONObject लिखना
- 23. अवरुद्ध करने के लिए - अवरुद्ध नाली() विधियों
- 24. एक्सेल में जेटीबल लिखना
- 25. PHP स्ट्रीम में अवरुद्ध और गैर-अवरुद्ध मोड
- 26. अनुरोध किए गए कम बाइट्स के साथ एक गैर अवरुद्ध यूडीपी लिखना वापसी कर सकते हैं?
- 27. ईएसआई अवरुद्ध या गैर-अवरुद्ध हैं?
- 28. ओकैम में बिल्ली लिखना: यूनिक्स.read
- 29. गैर अवरुद्ध पायथन सॉकेट
- 30. अवरुद्ध राज्य में RabbitMQ कनेक्शन?
नोड.जेएस गैर-अवरुद्ध कोड के लिए है। आप प्रवाह के खिलाफ जा रहे हैं और इसे अवरुद्ध करने की कोशिश करके अस्तित्व के बहुत ही उद्देश्य को हरा रहे हैं। –