clearTimeout
와 setTimeout
으로 구현할 수 있다.자세한 예제 디바운스와 쓰로틀링
비슷한 개념으로 쓰로틀링도 있다. 쓰로틀링은 일정 시간 내에 이벤트가 한 번씩만 실행되도록 제한하는 것이다.
// 상위 컴포넌트
$parentElement.addEventListener('custom-event', (e) => {
const { info } = e;
// 전달된 데이터를 통해 이벤트 핸들링
doSomthing(info);
})
// 하위 컴포넌트
$childElement.addEventListener("click", (e) => {
window.dispatchEvent(new CustomEvent('custom-event'), {info: "전달 할 데이터"}); // 이벤트를 발생시킨다
})
window.dispatchEvent
를 이용하면 발생하지 않은 이벤트도 발생 시킬 수 있다.중간중간 멈춰놓고 혼자 먼저 코드를 작성해보기도 했는데, 아직까지는 존재하는 로직을 호출하기만 하면 되는데 중복해서 작성하고 있는 경우가 많았다. 흐름을 따라가지 못 했던 것 같다. 계속 복습하면서 패턴에 익숙해지도록 해야겠다.
textarea -> contenteditable div가 되니 caret(|, 커서)가 계속해서 가장 앞으로 이동하는 현상이 발생했다. 자연스럽게 발생하는 현상인듯 한데, 해결 방법이 간단하지 않은 것 같아서 일단 열심히 구글링해서 해결해야겠다. 한시간 반 정도 쏟아봤는데 아직 해결이 안 됐다.😂