π§© Debounce ΠΈ Throttle Π² JavaScript: ΠΎΠ΄ΠΈΠ½ ΡΠ½ΠΈΠΏΠΏΠ΅Ρ β Π΄Π²Π΅ ΡΠ΅Ρ
Π½ΠΈΠΊΠΈ ΠΠΎΠ³Π΄Π° ΡΡ Π»ΠΎΠ²ΠΈΡΡ ΡΠΎΠ±ΡΡΠΈΡ Π²ΡΠΎΠ΄Π΅ scroll, resize, input, Π²Π°ΠΆΠ½ΠΎ Π½Π΅ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ°ΡΡ Π±ΡΠ°ΡΠ·Π΅Ρ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π΄Π²Π΅ ΡΠ΅Ρ
Π½ΠΈΠΊΠΈ: debounce (ΠΎΡΠ»ΠΎΠΆΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅) ΠΈ throttle (ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΡ ΡΠ°ΡΡΠΎΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ²). ΠΠΈΠΆΠ΅ β ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΌΠ΅Π΅Ρ ΠΈ ΡΠΎ, ΠΈ Π΄ΡΡΠ³ΠΎΠ΅: function throttleDebounce(fn, delay, mode = 'throttle') { let lastCall = 0; let timeout; return function (...args) { const now = Date.now(); if (mode === 'debounce') { clearTimeout(timeout); timeout = setTimeout(() => fn.apply(this, args), delay); } else { if (now - lastCall >= delay) { lastCall = now; fn.apply(this, args); } } }; } // ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅: // Debounce (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠΈΡΠΊ ΠΏΠΎ ΠΈΠ½ΠΏΡΡΡ) input.addEventListener('input', throttleDebounce(handleInput, 300, 'debounce')); // Throttle (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, scroll) window.addEventListener('scroll', throttleDebounce(trackScroll, 200, 'throttle')); π Π’Π΅ΠΏΠ΅ΡΡ ΡΡ ΠΌΠΎΠΆΠ΅ΡΡ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ ΡΠ΅ΡΡΡΡΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ° ΠΈ ΡΠ²ΠΎΠΉ CPU Π±Π΅Π· Π»ΠΈΡΠ½Π΅ΠΉ Π±ΠΎΠ»ΠΈ. ΠΡΠΎΡΡΠ°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°
π§© Debounce ΠΈ Throttle Π² JavaScript: ΠΎΠ΄ΠΈΠ½ ΡΠ½ΠΈΠΏΠΏΠ΅Ρ β Π΄Π²Π΅ ΡΠ΅Ρ Π½ΠΈΠΊΠΈ
14Β ΠΌΠ°ΡΒ 202514Β ΠΌΠ°ΡΒ 2025
~1 ΠΌΠΈΠ½