आप श्रृंखला एक कॉलबैक है कि एक और वादा रिटर्न के साथ .then()
का उपयोग कर वादा करता है। तो, मान लें कि आपके पास तीन कार्य ए, बी और सी हैं जो सभी एक वादा वापस करते हैं। आप उन्हें (अनुक्रम में निष्पादित) श्रृंखला कर सकते हैं इस तरह:
a().then(b).then(c).then(function(result) {
// all are done here
});
आप एक सरणी कार्रवाई कर रहे हैं और आप एक वादा-लौटने समारोह myFunc
कि आप सरणी में प्रत्येक आइटम के लिए कॉल करना चाहते है, तो आप एक का उपयोग कर सकते .reduce()
साथ सरणियों और वादों के लिए मानक डिजाइन पैटर्न इस तरह एक बार में सरणी एक आइटम के माध्यम से चलने के लिए:
var items = [...];
items.reduce(function(p, item) {
return p.then(function() {
return myFunc(item);
});
}, Promise.resolve());
यह पता चला है के रूप में यह वास्तव में सिर्फ पहला उदाहरण की तरह .then()
संचालकों का एक समूह चेनिंग है, लेकिन आपके लिए सरणी चलने के लिए .reduce()
की संरचना का उपयोग करना।
क्यों Promise.all कार्य को पूरा नहीं करता है? – elclanrs
@tarini [इस लेख] पर एक नज़र डालें (http://pouchdb.com/2015/05/18/we-have-a-problem-with-promises.html)। विशेष रूप से "उन्नत गलती # 3: वादे बनाम वादे कारखानों" खंड में। –