Pouya Farahany
6 سال پیش توسط Pouya Farahany مطرح شد
4 پاسخ

جلوگیری از اجرای میدلور قبلی

چجوری میشه از اجرای میدولر قبلی جلوگیری کرد وقتی میدلور بعدی به هر دلیلی اجرا نشده است ؟
مثلا تو فرایند پاک کردن میخوام خود فایل و ایدی اون از چند جا دیگه پاک بشه . میتونم کاری کنم که تا اولی انجام نشده دومی انجام نشه ولی چیکار باید بکنم که اگه دومی انجام نشد اولی کنسل بشه یا اطلاعاتش برگرده یا همچین چیزی ؟؟


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

طبق گفته جِفری: میدِل‌ وِر یا میان‌افزار رو در واقع مثل یک پیاز (حالت لایه به لایه) در نظر بگیرید.

فرض کنید درخواستی به سمت سرور شما ارسال میشه و شما روی این درخواست چند میدل‌ور اعمال میکنید.
درخواست به میدل ور اول میرسه.. ۲ حالت وجود داره:

  • درخواست با نیازهای میدل‌ور مطابقت داره و درخواست به میدل‌ور بعدی فرستاده میشه و ...
  • درخواست با نیازهای میدل‌ور مطابقت نداره و اجرای درخواست لغو میشه.

یعنی در واقع تا زمانی میدل‌ور اول با موفقیت اجرا نشه، میدل‌ور های بعدی شانسی برای اجرا شدن ندارند.


Alimotreb
تخصص : کانفیگ سرور و برنامه نویس
@Alimotreb 6 سال پیش مطرح شد
0

سلام
@m.p.farahany

تا میدل ور اولتون اجرا نشه ، که دومی اجرا نمیشه


Pouya Farahany
تخصص : برنامه‌نویس Backend
@m.p.farahany 6 سال پیش مطرح شد
0

@ali.bayat
@Alimotreb

ممنون از توضیحتون ولی منظور من اینه که اگر میدولر دوم انجام نشد راهی هست که میدلور اولی کنسل بشه ؟
یعنی میدلور اولی اجرا شده و رفته دومی حالا به هر دلیلی میدلور دومی اجرا نمیشه و درخواست نا تمام باقی میمونه ولی میدولر اولی اجرا شده ولی در نهایت درخواست به پایان نرسیده و من میخوام که کل فرایند کنسل بشه . به عنوان مثال تو فرایند پاک کردن میخوام خود فایل و ایدی اون از چند جا دیگه پاک بشه . تو میدلور اول داکیومنت پاک میشه و تو میدولر دوم ایدی اون از یه کالکشن دیگه پاک میشه .
حالا میخوام اگه ایدی پاک نشد (میدلور دوم ) داکیومنت هم پاک نشه (میدلور اول)


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

@m.p.farahany

میدل‌ور ها بصورت متوالی کار میکنند. از ۱ به ۲ و به ۳ و الا آخر...و در واقع هر کدوم موقعیت و امکان لغو درخواستو به ما میدن.

برای پیاده‌سازی چنین سیستمی :

  • به تعداد میدل‌ورهایی که ساختید، کلاس بسازید.
  • هر کلاس رو مسئول انجام ۱ کار بذارید.
  • ۱ کلاس جداگانه بوجود بیارید (مثلا TasksChecker) که کارش چک کردن درخواست‌ها و اجرای کلاس‌های بالا باشه.
  • یک متد در این کلاس بوجود بیارید مثل check که تمام کلاس‌های مربوط به درخواست‌های چک شده رو اجرا کنه.
  • از event و listener هم میتونید استفاده کنید.

در طراحی چنین سیستمی در PHP میشه براحتی از الگوی طراحی Chain of Responsibility استفاده کرد. اما در مورد جاوااسکریپت، نمیدونم چنین الگویی قابل پیاده‌سازی یا کار معقولی هست.


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

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