दिलचस्प पोस्ट
तालिका लेआउट में पंक्तियों को गतिशील रूप से कैसे जोड़ें स्पार्क: आरडीडी से स्थानीय मशीन में बड़े डेटा को पुनर्प्राप्त करने के लिए सर्वश्रेष्ठ अभ्यास स्क्वायर का पता लगाने वाले वर्ग नहीं मिलते हैं रूबी में "नक्शा" विधि क्या करती है? एक ViewPager से एक टुकड़ा पुनर्प्राप्त करें जेएसएफ बैकिंग बीन पद्धति को कैसे कॉल करें, जब ऑनक्लिक / अपूर्ण / ऑन … ईवेंट होता है और पेज लोड पर नहीं होता है TextView में HTML कैसे प्रदर्शित करें? जार फ़ाइल में भागो वर्ग एंड्रॉइड लेआउट वज़न सी # – विंडोज 64 बिट पर प्रोग्राम फाइल (एक्स 86) कैसे प्राप्त करें I HTTP त्रुटि 500.22 – आंतरिक सर्वर त्रुटि (एक asp.net सेटिंग का पता लगाया गया है जो एकीकृत प्रबंधित पाइपलाइन मोड में लागू नहीं होता है।) चर के रूप में तालिका का नाम HTTP टेस्ट सर्वर जो प्राप्त / पोस्ट कॉल स्वीकार करता है स्काला में जावा कलेक्शन पर फिराना फ़ंक्शन ereg_replace () नापसंद है – यह बग कैसे साफ़ करें?

क्रमशः क्यू में जावा के साथ वादों को कैसे चलाने के लिए?

मुझे कड़ी मेहनत कर रहे हैं क्रमिक रूप से वादे चलते हैं।

var getDelayedString = function(string) { var deferred = Q.defer(); setTimeout(function() { document.write(string+" "); deferred.resolve(); }, 500); return deferred.promise; }; var onceUponATime = function() { var strings = ["Once", "upon", "a", "time"]; var promiseFuncs = []; strings.forEach(function(str) { promiseFuncs.push(getDelayedString(str)); }); //return promiseFuncs.reduce(Q.when, Q()); return promiseFuncs.reduce(function (soFar, f) { return soFar.then(f); }, Q()); }; getDelayedString("Hello") .then(function() { return getDelayedString("world!") }) .then(function() { return onceUponATime(); }) .then(function() { return getDelayedString("there was a guy and then he fell.") }) .then(function() { return getDelayedString("The End!") }) 

एक बार बाद में () को क्रमशः आउटपुट ["एक बार", "पर", "ए", "समय"] होना चाहिए, लेकिन इसके बजाय वे कुछ कारणों से तुरंत उत्पादन कर रहे हैं।

जेएसफ़िल्ड यहां: http://jsfiddle.net/6Du42/2/

कोई आइडिया है कि मैं क्या गलत कर रहा हूँ?

वेब के समाधान से एकत्रित समाधान "क्रमशः क्यू में जावा के साथ वादों को कैसे चलाने के लिए?"

लेकिन इसके बजाय वे कुछ कारणों से तुरंत उत्पादन कर रहे हैं।

आप उन्हें पहले से ही यहां बुला रहे हैं:

 promiseFuncs.push(getDelayedString(str)); // ^^^^^ 

आपको function(){ return getDelayedString(str); } पुश करने की आवश्यकता होगी function(){ return getDelayedString(str); } function(){ return getDelayedString(str); } बीटीडब्ल्यू, each लूप में एक सरणी के लिए धकेलने के बजाय आपको map उपयोग करना चाहिए। और वास्तव में आपको वास्तव में वैसे भी ज़रूरत नहीं है, लेकिन सीधे strings सरणी को reduce कर सकते हैं:

 function onceUponATime() { var strings = ["Once", "upon", "a", "time"]; return strings.reduce(function (soFar, s) { return soFar.then(function() { return getDelayedString(s); }); }, Q()); } 

ओह, और document.write उपयोग नहीं करें ।