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

- 3 روز پیش
توسط پیمان محمدی آپدیت شد
پیمان محمدی ( 515 تجربه )
1 هفته پیش

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

بهترین پاسخ انتخاب شده توسط پیمان محمدی

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

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

let limit = 3;

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

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

علی بیات ( 41372 تجربه )
1 هفته پیش

@mohammadiitech

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

function *axiosQueries() 
{

    yield 1:

    yield 2:

    yield 3:

}

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

سید محمد حسین موسوی ( 4363 تجربه )
1 هفته پیش

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

پیمان محمدی ( 515 تجربه )
1 هفته پیش

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

سید محمد حسین موسوی ( 4363 تجربه )
1 هفته پیش

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

پیمان محمدی ( 515 تجربه )
1 هفته پیش

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

سید محمد حسین موسوی ( 4363 تجربه )
1 هفته پیش

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

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

let limit = 3;

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

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

پیمان محمدی ( 515 تجربه )
1 هفته پیش

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

برای ارسال پاسخ باید وارد سایت شوید