متد Promise.all() فوقالعادهست، ولی یه نکته مهم داره.
فرض کن:
const users = await Promise.all(
userIds.map(id => fetchUser(id))
);
اگر ۱۰ تا ID داشته باشی، مشکلی نیست.
ولی اگر ۵۰ هزار ID داشته باشی چی؟
یکدفعه ممکنه هزاران درخواست همزمان ایجاد کنی.
نتیجه؟
💥 فشار روی API
💥 مصرف زیاد RAM
💥همچنین Connectionهای زیاد
💥 احتمال Rate Limit شدن
پس همیشه:
«همزمان اجرا کردن» به معنی «بهترین Performance» نیست.
برای تعداد زیاد عملیات، معمولاً باید Concurrency رو محدود کنی.
مثلاً به جای اینکه ۱۰۰۰ درخواست رو همزمان اجرا کنی، میتونی دستههای کوچکتر بسازی:
20 requests
↓
wait
↓
20 requests
↓
wait
↓
...
این تفاوت بین:
Parallelism بدون کنترل
و
Concurrency کنترلشده
گاهی سریعترین سیستم، سیستمی نیست که همهچیز رو همزمان اجرا کنه؛ سیستمیه که منابع رو درست مدیریت میکنه.
@CodeVerse_dev