Het lijkt erop dat u meer code gebruikt in de parallelle versie
// 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()
Voor de parallelle versie plaatst u de functieaanroep (ContentRepo.geBySkillIdWithSourceFiltered
) in een lus. Daarom is het langzamer.
Voor de vraag over het parallel uitvoeren van beloften:
Like Promise.all
, Promise.allSettled
wachten op meerdere beloften. Het maakt niet uit in welke volgorde ze worden opgelost, of dat de berekeningen parallel lopen. Ze garanderen allebei geen gelijktijdigheid, noch het tegenovergestelde. Het is hun taak om ervoor te zorgen dat alle beloften worden nagekomen.
U kunt dus niet handmatig de parallelliteit van de uitvoering van de belofte garanderen
Hier is een echt interessant artikel
uitleg over parallellisme en Promise.All
en hoe browser Nodejs API verschilt van Nodejs API die op uw computer is geïnstalleerd in termen van parallellisme.
Hier is het uittreksel van de conclusie van het artikel:
Kanttekening:
Er is één subtiel verschil:
-
Promise.all:lost alleen op wanneer alle beloften die aan het zijn doorgegeven, worden opgelost, anders zal het worden afgewezen met de eerste afgewezen beloftefout.
-
Promise.allSettled:Wordt altijd opgelost met een array met informatie over opgeloste en afgewezen beloften.