ऐसा लगता है कि आप समानांतर संस्करण में अधिक कोड चला रहे हैं
// The normal version
let normal = await ContentRepo.geBySkillIdWithSourceFiltered(
[chosenSkillsArr[0].sid!],
readContentIds,
body.isVideoIncluded,
true,
true
);
// The code inside the parallel version:
chosenSkillsArr.map(async (skill: IScrapeSkillDocument) => {
const result = await ContentRepo.geBySkillIdWithSourceFiltered(
[skill.sid!],
readContentIds,
body.isVideoIncluded,
true,
true
);
})
[chosenSkillsArr[0].sid!], vs chosenSkillsArr.map()
समानांतर संस्करण के लिए, आप फ़ंक्शन कॉल डाल रहे हैं (ContentRepo.geBySkillIdWithSourceFiltered
) एक लूप के अंदर। इसलिए यह धीमा है।
समानांतर में चल रहे वादों के बारे में प्रश्न के लिए:
जैसे Promise.all
, Promise.allSettled
कई वादों का इंतजार यह इस बात की परवाह नहीं करता कि वे किस क्रम को हल करते हैं, या क्या संगणना समानांतर में चल रही है। वे दोनों समवर्ती और न ही विपरीत की गारंटी नहीं देते हैं। उनका काम सिर्फ यह सुनिश्चित करना है कि उन्हें दिए गए सभी वादों को पूरा किया जाए।
इसलिए आप मैन्युअल रूप से वादा निष्पादन की समानता की गारंटी नहीं दे सकते
यह रहा वास्तव में एक दिलचस्प लेख
समानांतरवाद और Promise.All
. की व्याख्या करते हुए और कैसे ब्राउज़र Nodejs API आपके कंप्यूटर पर स्थापित Nodejs API से समानता के संदर्भ में भिन्न है।
यहाँ लेख के निष्कर्ष का अंश दिया गया है:
साइड नोट:
एक सूक्ष्म अंतर है:
-
Promise.all:केवल तभी हल होता है जब उसके पास किए गए सभी वादे हल हो जाते हैं अन्यथा यह पहले अस्वीकृत वादे त्रुटि के साथ अस्वीकार कर देगा।
-
Promise.allSettled:हमेशा हल किए गए और अस्वीकृत वादों के बारे में जानकारी रखने वाले सरणी के साथ हल हो जाएगा।