भाषा: जावास्क्रिप्टजावास्क्रिप्ट: वादे के साथ रिकर्सिव कार्य कॉलिंग
Recursion - मेरी पसंदीदा विषय।
वादे - वे भ्रमित हो सकते हैं।
रिकर्सन + वादे - मुझे एक गद्देदार कमरे में प्रोग्राम करने की आवश्यकता है।
मैंने इस छोटी जेएस पहेली पहेली को The RecursiveFunHouse पर कॉल किया है, जो इस मूर्खता को कुछ मूर्खतापूर्ण तरीके से सरल बनाकर मेरी स्वच्छता को बनाए रखने के कॉमेडिक तरीके के रूप में है। उम्मीद है कि yall मेरे दर्द :) के बाहर एक हंसी प्राप्त कर सकते हैं
समस्या:
प्रत्येक पुनरावर्ती कॉल पिछले कॉल के परिणाम पर निर्भर है, लेकिन आदेश परिणाम मैं एक अतुल्यकालिक चलाना चाहिए प्राप्त करने के लिए कार्य और अन्य उप कार्यों में परिणाम का उपयोग करें।
"रिकर्सिव फ़न हाउस" ने मुझे इस मुद्दे को उबालने में मदद की - मूल रिकर्सिव लूप एक अनिर्धारित मान के साथ जारी है क्योंकि उप कार्य अभी भी निष्पादित हैं।
मज़ा हाउस - चारों ओर के बीच (-99) और 99 बार पिछले संख्या और नए नंबर के बीच पिछले अंतर यादृच्छिक संख्या का संग्रह छोरों सकारात्मक मज़ा
मुद्रण "पर इसे यहाँ बनाया गया 1 है ... इसे यहां बनाया 6 "यह इंगित करना चाहिए कि उप-कार्यों को सही तरीके से संभाला गया था और हमारे पास अगले लूप के लिए एक मूल्य है।
वर्तमान में यह 1,2,3,6,4,5 :(
recursiveFunHouse.js प्रिंट
var recursiveFunHouse = function(num){
console.log("Made it here 1");
var newNum = performSideTasks();
console.log("Made it here 6");
console.log("newNum");
console.log(newNum);
if(newNum-num >0){
recursiveFunHouse(newNum);
}
else{
console.log("The FunHouse Generated These Numbers :")
for(var i = 0; i <numList.length; i++){
console.log(numList[i]);
}
}
};
var performSideTasks = function(){
console.log("Made it here 2");
someAsyncTask().then(function(num){
anotherTask(num);
console.log("made it here 5");
return num;
});
}
var someAsyncTask = function(){
return new Promise (function(resolve, reject) {
console.log("made it here 3");
var randNum = Math.floor(Math.random()*99) + 1;
randNum *= Math.floor(Math.random()*2) == 1 ? 1 : -1;
setTimeout(function() {
numList.push(randNum)
resolve(randNum)
}, 100);
});
}
var anotherTask = function(num){
console.log("made it here 4");
console.log(num);
};
var numList= [];
recursiveFunHouse(20);
नोट - मेरी दयनीय वापसी कथन return num;
माफ कर दो यह सिर्फ मैं क्या इच्छा से पता चलता मैं अपने कंप्यूटर बता सकते
Recursion बारे में प्रश्न और वादे:।
1) क्या मुझे अगली रिकर्सिव लूप में जाने के बारे में पहली जगह में चिंतित होना चाहिए, जो अभी तक हल नहीं हुआ है?
2) यदि नहीं, तो इस कार्य को अपघटन रखने और अंतिम रिकॉर्डेड लूप को अंतिम कॉल के समाधान की प्रतीक्षा करने के लिए एक साफ तरीका क्या है?
Recursion और वादे जादूगर स्तरीय -95 जादुई कभी कभी ... कि सभी मैं कह रहा हूँ लग सकता है। प्रश्न-हो गया।
performSideTasks someAsynTask वादा ही लौटना चाहिए, ताकि मुख्य कार्य तो फिर() – Supersharp