راکت
حل شده

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

7 پاسخ

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

ثبت پرسش جدید

پاسخ‌ها

7
سید محمد حسین موسوی
سید محمد حسین موسوی
@SeyedMH.Mosavi

تخصص: FullStack Developer

بهترین پاسخ

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

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

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

تخصص: توسعه دهنده ارشد وب

@mohammadiitech

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

function *axiosQueries() 
{

    yield 1:

    yield 2:

    yield 3:

}

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

سید محمد حسین موسوی
سید محمد حسین موسوی
@SeyedMH.Mosavi

تخصص: FullStack Developer

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

شاید پاسخ شما همین‌جا باشد

سالار
سالار
@mohammadiitech

تخصص: برنامه نویس

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

سید محمد حسین موسوی
سید محمد حسین موسوی
@SeyedMH.Mosavi

تخصص: FullStack Developer

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

سالار
سالار
@mohammadiitech

تخصص: برنامه نویس

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

سالار
سالار
@mohammadiitech

تخصص: برنامه نویس

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

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

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