var myArray = [1, 2, 3, 4, 5, 6]
function myPrommise(num){
return new Promise(res => {
window.setTimeout(()=>{
res( console.log("done: " + num) )
},2000)
})
}
myPrommise(myArray[0])
.then(x => myPrommise(myArray[1]))
.then(x => myPrommise(myArray[2]))
.then(x => myPrommise(myArray[3]))
.then(x => myPrommise(myArray[4]))
.then(x => myPrommise(myArray[5]))
अभी, यदि मैं ऊपर दिए गए कथन को निष्पादित करता हूं, तो यह अनुक्रमिक रूप से चलाएगा। मेरे वास्तविक उपयोग मामले में सरणी गतिशील रूप से आबादी है और मुझे myArray
में प्रत्येक सदस्य के लिए myPromise()
फ़ंक्शन निष्पादित करने की आवश्यकता है।अनुक्रमिक रूप से वादे निष्पादित करने के लिए, सरणी से पैरामीटर को पारित करना?
मैं "पॉज़ेबल लूप" कैसे बना सकता हूं जो सरणी में प्रत्येक आइटम के लिए लूप करेगा, myPromise
निष्पादित करेगा और अगली पुनरावृत्ति जारी रखने से पहले वादा को हल करने का इंतजार करेगा?
myArray.reduce(
(p, x) =>
p.then(_ => myPromise(x)),
Promise.resolve()
)
Bluebird, एक उत्कृष्ट वादा पुस्तकालय आप का उपयोग करना चाहिए यदि आप नहीं कर रहे हैं, यह भी has mapSeries
built in:
Promise.mapSeries(myArray, myPromise)
Runnable
Promise.All क्या आप –
@JohnPeters अपने स्वयं पर चाहते है, कि, पर्याप्त नहीं है क्योंकि यह अनुक्रमिक रूप से हल नहीं होगा। – 4castle