TGViewer
Perfino🌱 Perfino🌱 @perfino_com · 65 subscribers
Post #99 67
Debounce vs Throttle — دو ترفند نجات‌دهنده پرفورمنس

اگه مستقیم به scroll، resize یا input تابع سنگین وصل کردی، داری CPU کاربر رو می‌سوزونی! 🔥

اینا میان وسط:

🔹 Debounce → صبر کن کاربر دست از کار بکشه، بعد اجرا کن
🔹 Throttle → هر X میلی‌ثانیه یه بار اجرا کن، نه بیشتر


🧩Debounce
function debounce(fn, delay = 500) {
  let timer;
  return (...args) => {
    clearTimeout(timer);
    timer = setTimeout(() => fn(...args), delay);
  };
}

// جستجوی زنده
input.addEventListener("input", debounce(e => {
  fetch(`/search?q=${e.target.value}`);
}, 600));

تا کاربر تایپ نکنه، درخواست نمی‌ره ✅
یعنی نه سرور درگیر می‌شه، نه UI لگ می‌زنه.



🧩 Throttle
function throttle(fn, limit = 200) {
  let last = 0;
  return (...args) => {
    const now = Date.now();
    if (now - last >= limit) {
      last = now;
      fn(...args);
    }
  };
}

// اسکرول
window.addEventListener("scroll", throttle(() => {
  console.log(window.scrollY);
}, 300));

هر ۳۰۰ms یه بار، نه بیشتر ✅
یعنی پرفورمنس عالی


🎯 کجا استفاده کنیم؟

جستجوی زنده Debounce
اعتبارسنجی فرم Debounce
رویداد scroll Throttle
رویداد resize Throttle

@perfino_com
  • ❤‍🔥 1
  • 👍 1
  • 🔥 1
More from @perfino_com
  1. Oct 5, 2026حالا چرا در ری‌اکت می‌گوییم state را mutate نکن؟ برگرد به مفهوم snapshot که در پیام قبلی گ…
  2. Oct 5, 2026{ریکت}: همیشه میگن " state رو mutate نکن " خب این یعنی چی؟ 1. اول معنی خود کلمه Mutation ی…
  3. Oct 4, 2026#ایده_تمرین_ریکت @perfino_com
  4. Oct 3, 2026اگه داری ریکت میخونی حتما به این مبحث دقت کن و مفهومش دقیق یادبگیر (درسته متنش طولانیه ولی…
  5. Oct 3, 2026مفهوم Snapshot در ری‌اکت این یکی از مهم‌ترین مفاهیمی است که اگر درست بفهمی، نصف باگ‌های عج…
  6. Oct 3, 2026یک تمرین چک لیست متفاوت با ریکت #ایده_تمرین @perfino_com
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 →