λ””λ°”μš΄μ‹±(Debouncing)

πŸ“„ λ””λ°”μš΄μ‹±(debouncing)

  1. 이벀트λ₯Ό κ·Έλ£Ήν™”ν•˜μ—¬ νŠΉμ •μ‹œκ°„μ΄ μ§€λ‚œ ν›„ ν•˜λ‚˜μ˜ 이벀트만 λ°œμƒν•˜λ„λ‘ ν•˜λŠ” 기술
  2. 연이어 ν˜ΈμΆœλ˜λŠ” ν•¨μˆ˜λ“€ 쀑 λ§ˆμ§€λ§‰ ν•¨μˆ˜(λ˜λŠ” 제일 처음)만 ν˜ΈμΆœν•˜λ„λ‘ ν•˜λŠ” 것

λ””λ°”μš΄μ‹± κΈ°μˆ λŠ” 검색 κΈ°λŠ₯을 κ΅¬ν˜„ν•˜λŠ” κ²½μš°μ— κ°€μž₯ 많이 μ‚¬μš©λ©λ‹ˆλ‹€.

이런 κ²½μš°μ—λŠ”

j ja jav java

처럼 ν‚€μ›Œλ“œ ν•˜λ‚˜ν•˜λ‚˜ μΈμ‹ν•΄μ„œ ν‚€μ›Œλ“œ ν•˜λ‚˜μ— 맀번 μ΄λ²€νŠΈκ°€ λ°œμƒν•˜κ²Œ λ©λ‹ˆλ‹€.

μ΄λ ‡κ²Œ μ²˜λ¦¬ν•΄μ•Όν•˜λŠ” 일이 μ—¬λŸ¬λ²ˆμ˜ μš”μ²­μ΄ μžˆμ„λ•Œ μ΅œμ’…(ν˜Ήμ€ 처음) μš”μ²­μ˜ 처리결과만 λ‚΄λ†“κ²Œ ν•˜λŠ”κ²Œ λ””λ°”μš΄μ‹±μž…λ‹ˆλ‹€.

var timer;
document.querySelector("#input").addEventListener("input", function (e) {
  if (timer) {
    clearTimeout(timer);
  }
  timer = setTimeout(function () {
    console.log("여기에 ajax μš”μ²­", e.target.value);
  }, 200);
});
  • νƒ€μžλ₯Ό μΉ  λ•Œ(input 이벀트 λ°œμƒ)λ§ˆλ‹€ 타이머λ₯Ό μ„€μ •ν•œλ‹€.
  • 200msλ™μ•ˆ μž…λ ₯이 μ—†μœΌλ©΄ μž…λ ₯이 λλ‚œ κ²ƒμœΌλ‘œ ν•œλ‹€. (μ‹œκ°„ 자유 μ„€μ • κ°€λŠ₯)
  • 200ms 이전에 νƒ€μž μž…λ ₯이 λ°œμƒν•˜λ©΄ 이전 νƒ€μ΄λ¨ΈλŠ” μ·¨μ†Œν•˜κ³  μƒˆλ‘œμš΄ 타이머λ₯Ό λ‹€μ‹œ μ„€μ •ν•œλ‹€.

좜처

Leave a comment