मेरे पास संरचना की तरह एक सरणी है जो async विधियों को उजागर करती है। Async विधि कॉल सरणी संरचनाएँ जो बदले में अधिक async विधियों को उजागर करती है। मैं इस संरचना से प्राप्त मूल्यों को संग्रहीत करने के लिए एक और JSON ऑब्जेक्ट बना रहा हूं और इसलिए मुझे कॉलबैक में संदर्भों पर नज़र रखने के बारे में सावधान रहने की आवश्यकता है।
मैंने एक ब्रूट फोर्स सॉल्यूशन को कोडित किया है, लेकिन मैं एक अधिक मुहावरेदार या स्वच्छ समाधान सीखना चाहूंगा।
- घोंसले के शिकार के स्तर के लिए पैटर्न को दोहराने योग्य होना चाहिए।
- मुझे एनक्लोजिंग रूटीन को हल करने के लिए यह निर्धारित करने के लिए वादे या किसी अन्य तकनीक का उपयोग करने की आवश्यकता है।
- हर तत्व अनिवार्य रूप से एक async कॉल करना शामिल नहीं करेगा। इसलिए एक नेस्टेड वादे में। मैं बस इंडेक्स के आधार पर अपने JSON सरणी तत्वों को असाइनमेंट नहीं कर सकता। फिर भी, मुझे यह सुनिश्चित करने के लिए वादे की तरह कुछ का उपयोग करने की आवश्यकता है। यह सुनिश्चित करने के लिए कि सभी संपत्ति असाइनमेंट को संलग्न करने की दिनचर्या को हल करने से पहले किया गया है।
- मैं ब्लूबर्ड वादे का उपयोग कर रहा हूं लेकिन यह कोई आवश्यकता नहीं है
यहाँ कुछ आंशिक कोड है -
var jsonItems = [];
items.forEach(function(item){
var jsonItem = {};
jsonItem.name = item.name;
item.getThings().then(function(things){
// or Promise.all(allItemGetThingCalls, function(things){
things.forEach(function(thing, index){
jsonItems[index].thingName = thing.name;
if(thing.type === 'file'){
thing.getFile().then(function(file){ //or promise.all?
jsonItems[index].filesize = file.getSize();
Promise.map
(समवर्ती) और Promise.each
इस मामले में (अनुक्रमिक), भी टिप्पणी Promise.defer
हटा दिया गया है - मेरा उत्तर शो में कोड कैसे द्वारा यह से बचने के लिए लौटने का वादा किया। वादे सभी वापसी मूल्यों के बारे में हैं।