<TIL id="20210918토">commit수정/삭제, Debounce</TIL>

JY·2021년 9월 26일
0

TIL

목록 보기
16/18

1. git push한 후 commit 수정/삭제

참고한 블로그 : Git / Push한 커밋 수정·삭제

  • git push한 후 commit 수정

    git reset --soft HEAD~1
    //내용 수정 후 커밋
    git push -f

  • git push한 후 commit 삭제

    git reset --hard HEAD~1
    git push -f


2. Lodash라이브러리의 Debounce

1) Lodash
: 배열, 객체를 처리할 수 있는 다양한 메서드 지원 (Lodash - debounce 링크)

2) debounce

  • 실행할 함수(fn)와 대기할 시간(timer)을 인자로 받는다.
  • 이벤트 발생 후 timer가 끝나기 전에 이벤트가 다시 발생할 경우, timer를 리셋한다. timer가 끝날 때까지 이벤트가 재발생 하지 않아 timer가 끝날 경우 fn을 실행한다.

3) ⭐ debounce 구현
출처 블로그

클로저를 사용해 사이드이팩트인 timeout을 관리하는 구조이다. 클로저는 스코프체인 상의 변수들에 접근할 수 있다.

function debounce(callback, limit) {
    let timer = null;

    return function() {
        const context = this;
        const args = arguments;

        clearTimeout(timer);

        timer = setTimeout(() => {
          // callback함수가 실행될 때 this가 정해짐
          callback.apply(context, args);
        }, limit);
    }
}
  • callback: 실행할 함수
  • limit: callback함수 실행 대기 시간
  • limit 이내에 debounce가 재호출 될 경우, clearTimout(timer) 로 이전의 timer가 제거됨
  • apply메소드로 this의 범위를 지정하는데, 여기서 thiscallback함수가 실행될 때 그 컨텍스트의 this가 배정된다.

4) Debounce에 Promise 적용
참고블로그__Javascript Debounce 구현 하기

0개의 댓글