سالار
5 سال پیش توسط سالار مطرح شد
7 پاسخ

مدیریت درخواست های ایجکس

سلام دارم یه آپلودر مینویسم که میخوام درخواست های ایجکس توش مدیریت بشن
یعنی اینکه در عین حال فقط سه تا درخواست ایجکس ارسال بشه وبقیه درخواست ها منتظر باشن که یکی از درخواست های تموم بشن بعد یکی یکی انجام بشن
از کتابخونه axios استفاده میکنم
کسی راهشو بلده؟؟؟؟


ثبت پرسش جدید
سید محمد حسین موسوی
تخصص : FullStack Developer
@SeyedMH.Mosavi 5 سال پیش مطرح شد
1

خوب کاربری که خودش داره تصمیم می گیره سی تا فایل رو ارسال کنه همون بهتره که بزاری دوساعت معطل بمونه :))

اگر هدفت اینه می تونه خیلی ساده به این برسی
یه شمارنده درست کن که محدودیت تعداد اپلود رو همون اول معیین کن. مثلا اینطوری:

let limit = 3;

حال فرض کن کاربر ده تا فایل انتخاب کرده و می خواد دکمه ارسال رو بزنه:
فایل ها رو داخل یه آرایه بصورت صف نگه می داری. همون اول به تعداد limit ات از ارایه فایل بردار و درخواست ajax ات رو صدا بزن. داخل درخواست ajax ات هم همیشه یدونه از limit کم کن.
یعنی سه بار دستور ajax ات صدا زده می شه و هر بار یدونه از limit ات کم می شه و دستور ajax ات هم می ره از اون فایل هات یدونه بر می داره و شروع می کنه به اپلود کردن
وقتی به تعداد limit فایل رو داری ارسال می کنی، پس limit ات می شه 0
حالا برو داخل success و error درخواست ajaxt ات یدونه به limit اضافه کن
این به این معنیه که وقتی درخواست ajax ات به اتمام رسید، چه درست بود چه غلط یعنی دونه جا خالی شده و به این معنیه که limit شده 1 پس می تونه یه فایل دیگه رو هم شروع کنی به اپلود کردن

کل کاری که باید بکنی اینه که موقعی که درخواست ajax ات تموم می شه چک کنی ببینی limit بزرگتر از 0 هست یا نه بعد چک کنی ببینی فایلی برای اپلود مونده یا نه
برای مدیریت صف فایل ها هم باید هواست باشه که وقتی فایلت یه بار ارسال شد، از ارایه حذفش کنی


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
0

@mohammadiitech

می‌تونید از Promise استفاده کنید و تا وقتی درخواست اول به پایان نرسیده بعدی اجرا نشه و الا آخر...
و همچنین
میشه از Generator ها در جاوااسکریپت استفاده کرد٬ چیزی شبیه تابع زیر:

function *axiosQueries() 
{

    yield 1:

    yield 2:

    yield 3:

}

Generator نوعی تابع هست که میشه گفت امکان pause کردنش وجود داره و در اکمااسکریپت۶ اضافه شده.


سید محمد حسین موسوی
تخصص : FullStack Developer
@SeyedMH.Mosavi 5 سال پیش مطرح شد
0

چرا می خوای همچین کاری انجام بدی؟


سالار
تخصص : برنامه نویس
@mohammadiitech 5 سال پیش مطرح شد
0

:| گفتم دیگه چندتا اپلود دارم که تعدادشون مشخص نیست
میخوام سه تا سه تا این درخواست ها اجرا بشن و بعد از پایان هر یه درخواست جای اون با درخواست بعدی پر بشه


سید محمد حسین موسوی
تخصص : FullStack Developer
@SeyedMH.Mosavi 5 سال پیش مطرح شد
0

منظورم اینه که اگر تعدادش نامحدود باشه چه فرقی می کنه
می خوام ببینم محدودیت سه تا برای چیه؟ می خوای با این کار فشار کمتری به سرورت وارد بشه یا بحث دیگه ای مطرحه؟


سالار
تخصص : برنامه نویس
@mohammadiitech 5 سال پیش مطرح شد
0

خب وقتی که مثلا 30 تا فایل با هم اپلود میشن کاربر اذیت میشه
بهتره که این اپلودا با یه محدودیتی انجام بشن مثلا سه تا سه تا


سید محمد حسین موسوی
تخصص : FullStack Developer
@SeyedMH.Mosavi 5 سال پیش مطرح شد
1

خوب کاربری که خودش داره تصمیم می گیره سی تا فایل رو ارسال کنه همون بهتره که بزاری دوساعت معطل بمونه :))

اگر هدفت اینه می تونه خیلی ساده به این برسی
یه شمارنده درست کن که محدودیت تعداد اپلود رو همون اول معیین کن. مثلا اینطوری:

let limit = 3;

حال فرض کن کاربر ده تا فایل انتخاب کرده و می خواد دکمه ارسال رو بزنه:
فایل ها رو داخل یه آرایه بصورت صف نگه می داری. همون اول به تعداد limit ات از ارایه فایل بردار و درخواست ajax ات رو صدا بزن. داخل درخواست ajax ات هم همیشه یدونه از limit کم کن.
یعنی سه بار دستور ajax ات صدا زده می شه و هر بار یدونه از limit ات کم می شه و دستور ajax ات هم می ره از اون فایل هات یدونه بر می داره و شروع می کنه به اپلود کردن
وقتی به تعداد limit فایل رو داری ارسال می کنی، پس limit ات می شه 0
حالا برو داخل success و error درخواست ajaxt ات یدونه به limit اضافه کن
این به این معنیه که وقتی درخواست ajax ات به اتمام رسید، چه درست بود چه غلط یعنی دونه جا خالی شده و به این معنیه که limit شده 1 پس می تونه یه فایل دیگه رو هم شروع کنی به اپلود کردن

کل کاری که باید بکنی اینه که موقعی که درخواست ajax ات تموم می شه چک کنی ببینی limit بزرگتر از 0 هست یا نه بعد چک کنی ببینی فایلی برای اپلود مونده یا نه
برای مدیریت صف فایل ها هم باید هواست باشه که وقتی فایلت یه بار ارسال شد، از ارایه حذفش کنی


سالار
تخصص : برنامه نویس
@mohammadiitech 5 سال پیش مطرح شد
0

@SeyedMH.Mosavi
متوجه نشدم دقیق
اینطوری که باید همش تو در تو the و catch بزنم
میتونی یه نمونه نشون بدی؟؟


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام