Sepertinya Anda menjalankan lebih banyak kode dalam versi paralel
// 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()
Untuk versi paralel, Anda melakukan panggilan fungsi (ContentRepo.geBySkillIdWithSourceFiltered
) di dalam lingkaran. Itu sebabnya lebih lambat.
Untuk pertanyaan tentang menjalankan janji secara paralel:
Sukai Promise.all
, Promise.allSettled
menunggu banyak janji. Itu tidak peduli tentang urutan apa yang mereka selesaikan, atau apakah perhitungan berjalan secara paralel. Keduanya tidak menjamin konkurensi atau sebaliknya. Tugas mereka hanya untuk memastikan semua janji yang diberikan kepadanya ditangani.
Jadi Anda tidak dapat menjamin paralelisme eksekusi janji secara manual
Ini artikel menarik
menjelaskan paralelisme dan Promise.All
dan bagaimana browser Nodejs API berbeda dari Nodejs API yang diinstal di komputer Anda dalam hal paralelisme.
Berikut petikan kesimpulan artikel tersebut:
Catatan Samping:
Ada satu perbedaan halus:
-
Promise.all:Menyelesaikan hanya ketika semua janji yang diberikan kepadanya diselesaikan jika tidak, ia akan menolak dengan kesalahan janji pertama yang ditolak.
-
Promise.allSettled:Akan selalu diselesaikan dengan array yang memiliki info tentang janji yang diselesaikan dan ditolak.