یلدا ادامه داره... ❤️ ۴۰ درصد تخفیف همه دورهها
استفاده از تخفیفهاسلام دارم یه آپلودر مینویسم که میخوام درخواست های ایجکس توش مدیریت بشن
یعنی اینکه در عین حال فقط سه تا درخواست ایجکس ارسال بشه وبقیه درخواست ها منتظر باشن که یکی از درخواست های تموم بشن بعد یکی یکی انجام بشن
از کتابخونه axios استفاده میکنم
کسی راهشو بلده؟؟؟؟
خوب کاربری که خودش داره تصمیم می گیره سی تا فایل رو ارسال کنه همون بهتره که بزاری دوساعت معطل بمونه :))
اگر هدفت اینه می تونه خیلی ساده به این برسی
یه شمارنده درست کن که محدودیت تعداد اپلود رو همون اول معیین کن. مثلا اینطوری:
let limit = 3;
حال فرض کن کاربر ده تا فایل انتخاب کرده و می خواد دکمه ارسال رو بزنه:
فایل ها رو داخل یه آرایه بصورت صف نگه می داری. همون اول به تعداد limit ات از ارایه فایل بردار و درخواست ajax ات رو صدا بزن. داخل درخواست ajax ات هم همیشه یدونه از limit کم کن.
یعنی سه بار دستور ajax ات صدا زده می شه و هر بار یدونه از limit ات کم می شه و دستور ajax ات هم می ره از اون فایل هات یدونه بر می داره و شروع می کنه به اپلود کردن
وقتی به تعداد limit فایل رو داری ارسال می کنی، پس limit ات می شه 0
حالا برو داخل success و error درخواست ajaxt ات یدونه به limit اضافه کن
این به این معنیه که وقتی درخواست ajax ات به اتمام رسید، چه درست بود چه غلط یعنی دونه جا خالی شده و به این معنیه که limit شده 1 پس می تونه یه فایل دیگه رو هم شروع کنی به اپلود کردن
کل کاری که باید بکنی اینه که موقعی که درخواست ajax ات تموم می شه چک کنی ببینی limit بزرگتر از 0 هست یا نه بعد چک کنی ببینی فایلی برای اپلود مونده یا نه
برای مدیریت صف فایل ها هم باید هواست باشه که وقتی فایلت یه بار ارسال شد، از ارایه حذفش کنی
میتونید از Promise استفاده کنید و تا وقتی درخواست اول به پایان نرسیده بعدی اجرا نشه و الا آخر...
و همچنین
میشه از Generator ها در جاوااسکریپت استفاده کرد٬ چیزی شبیه تابع زیر:
function *axiosQueries()
{
yield 1:
yield 2:
yield 3:
}
Generator نوعی تابع هست که میشه گفت امکان pause کردنش وجود داره و در اکمااسکریپت۶ اضافه شده.
:| گفتم دیگه چندتا اپلود دارم که تعدادشون مشخص نیست
میخوام سه تا سه تا این درخواست ها اجرا بشن و بعد از پایان هر یه درخواست جای اون با درخواست بعدی پر بشه
منظورم اینه که اگر تعدادش نامحدود باشه چه فرقی می کنه
می خوام ببینم محدودیت سه تا برای چیه؟ می خوای با این کار فشار کمتری به سرورت وارد بشه یا بحث دیگه ای مطرحه؟
خب وقتی که مثلا 30 تا فایل با هم اپلود میشن کاربر اذیت میشه
بهتره که این اپلودا با یه محدودیتی انجام بشن مثلا سه تا سه تا
خوب کاربری که خودش داره تصمیم می گیره سی تا فایل رو ارسال کنه همون بهتره که بزاری دوساعت معطل بمونه :))
اگر هدفت اینه می تونه خیلی ساده به این برسی
یه شمارنده درست کن که محدودیت تعداد اپلود رو همون اول معیین کن. مثلا اینطوری:
let limit = 3;
حال فرض کن کاربر ده تا فایل انتخاب کرده و می خواد دکمه ارسال رو بزنه:
فایل ها رو داخل یه آرایه بصورت صف نگه می داری. همون اول به تعداد limit ات از ارایه فایل بردار و درخواست ajax ات رو صدا بزن. داخل درخواست ajax ات هم همیشه یدونه از limit کم کن.
یعنی سه بار دستور ajax ات صدا زده می شه و هر بار یدونه از limit ات کم می شه و دستور ajax ات هم می ره از اون فایل هات یدونه بر می داره و شروع می کنه به اپلود کردن
وقتی به تعداد limit فایل رو داری ارسال می کنی، پس limit ات می شه 0
حالا برو داخل success و error درخواست ajaxt ات یدونه به limit اضافه کن
این به این معنیه که وقتی درخواست ajax ات به اتمام رسید، چه درست بود چه غلط یعنی دونه جا خالی شده و به این معنیه که limit شده 1 پس می تونه یه فایل دیگه رو هم شروع کنی به اپلود کردن
کل کاری که باید بکنی اینه که موقعی که درخواست ajax ات تموم می شه چک کنی ببینی limit بزرگتر از 0 هست یا نه بعد چک کنی ببینی فایلی برای اپلود مونده یا نه
برای مدیریت صف فایل ها هم باید هواست باشه که وقتی فایلت یه بار ارسال شد، از ارایه حذفش کنی
@SeyedMH.Mosavi
متوجه نشدم دقیق
اینطوری که باید همش تو در تو the و catch بزنم
میتونی یه نمونه نشون بدی؟؟
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟