TGViewer
تورهام | TorhamDev تورهام | TorhamDev @torhamdevch · 138 subscribers
Post #18 1.06K
دو روش مختلف هندل کردن یک ایونت. Debouncing و Throttling

قبل از اینکه به موضوع اصلی برسیم اول بیایید بینیم یک ایونت اصلا چی هستش.
یک مثال خیلی ساده از یک ایونت میتونه یک سرچ باکس باشه، برای مثال یک سرچ باکس یک وبسایت فیلم. زمانی که یوزر شروع به تایپ کردن اسم فیلمی که میخواد جست‌وجو کنه میکنه با هر لغتی که تایپ میکنه یک ایونت ساخته میشه، اما حالا سوال اینجاست که این ایونت رو چطور هندل کنیم و چه زمانی درخواست رو برای بک اند ارسال کنیم تا نتایج جست‌و‌جو رو دریافت کنیم؟


روش پیشفرض: حالت پیشفرض(دیفالت) اینه که با هر لغتی که یوزر تایپ کرد یک درخواست به بک‌اند بزنیم محتوا دانلود کنیم و لیست رو نشون بدیم. مشکل این ماجرا کاملا مشخص شما نه تنها درخواست بیش از اندازه به بک‌اند میزنید بلکه کلاینت هم باید یک فانکشن رو بارها اجرا کنه که نتیجه اش کند شدن کلاینت و بک‌اند خواهد بود.

Debouncing:
در این روش شما یک تایمر اصلی دارید. فرض کنیم تایمر ما هر ۵ ثانیه است. زمانی که یوزر شروع به تایپ کردن لغات میکنه ما فانکشن رو صدا میزنیم اما این بار فانکشن ۵ ثانیه صبر میکنه قبل از ارسال درخواست و اگر در این ۵ ثانیه ایونت جدیدی ساخته شد ( کاربر لغت جدیدی تایپ کنه) تایمر ۵ ثانیه ریست میکنه و دوباره ۵ ثانیه صبر میکنه، در نتیجه شما تنها زمانی درخواست رو ارسال میکنید که از اخرین چیزی که کاربر نوشته باشه ۵ ثانیه گذشته باشه، اینطوری نه تنها کلاینت شما منابع کمتری استفاده میکنه بلکه بک اند هم درخواست‌های کمتری دریافت میکنه.

Throttling:
در این روش ما بازهم یک تایمر داریم اما تفاوت این روش با روش debouncing اینه که بلافاصه که یوزر شروع به تایپ کردن لغتی کرد ما درخواست به بک‌اند ارسال میکنیم و بعدش ۵ ثانیه صبر میکنیم و دوباره هرچیزی که یوزر نوشته بود ارسال میکنیم و این رو تا ابد انجام میدیم مگر اینکه از اخرین باری که فانکشن اجرا شده باشه تغییری رخ نداده باشه. در نتیجه تو این روش فانکشن در یک بازه زمانی مشخص همیشه اجرا میشه.


البته throttling خیلی گزینه خوبی برای این مثال نیست و debounce گزینه درست هندل کردن این مثال هست.

@TorhamDevCH
  • ❤ 3
  • 👍 1
More from @torhamdevch
  1. Sep 30, 2026>++++++++++[<+++++++>-]<+++.[-]>+++++++++[<++++>-]<+++.[-]>++++++++++[<++++++++++>-]<+++++…
  2. Sep 12, 2026🐈‍⬛ پروژه Local AI Cat Detector یه پروژه کوچیک برای یادگیری Local AI ساختم که با استفاده…
  3. Sep 10, 2026مثل اینکه بعد از اینکه openai گفته ما اون مسئله بزرگ زیاضی حل کردیم دوتا دانشمند گفتن که ا…
  4. Sep 8, 2026document post
  5. Sep 7, 2026چیزی که برای من جالبه اینه که 3.15 بیشتر از اینکه صرفا یه سری فیچر جدید اضافه کرده باشه، د…
  6. Sep 7, 2026یه نیم‌نگاه به پایتون ۳.۱۵ داشته باشیم! 🚀 ✨ یکی از جذاب‌ترین تغییراتش برای من لیزی ایمپور…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →