LeetCode - 2725. Interval Cancellation

henu·2023년 9월 1일
0

LeetCode

목록 보기
37/186
post-thumbnail

Solution

var cancellable = function(fn, args, t) {
    fn(...args)
    const ID = setInterval(fn, t, ...args)

    return function cancelFn() {
        clearInterval(ID);
    }
};

Explanation

일단 문제의 요구사항을 살펴보면 아래와 같다.

  • 함수 fn, 전달인자 배열 args, 인터벌시간 t가 주어질때, 취소함수 cancelfn를 리턴하라
  • 함수 fn은 즉시 실행되야한다. 그리고 매 t밀리초마다 실행되어야한다.

간추려보면 함수 fnt밀리초마다 실행하라는 것이다. 따라서 setInterval() 메소드를 사용해서 해결하기로했다.
setInterval() 메소드는
1. delay마다 실행될 함수
2. delay 시간
3. delay마다 실행될 함수에 전달될 인자
이렇게 3종류의 파라미터를 가진다. 따라서 fn, t, args를 순서대로 전달인자로 전달하면된다.
이 때 반환되는 값은 타이머를 식별하는 고유한 숫자 값이다. 이 값을 이용해서 인터벌을 취소할 수 있다.
clearInterval() 메소드에 이 값을 전달해서 취소할 수 있다. 따라서, 리턴되는 cancelfn안에 취소 코드를 작성하면 된다.
여기서 주의할 점은 setInterval() 메소드는 호출 후 delay 시간이 한 번 지난 후 처음으로 콜백함수가 실행된다. 그래서 메소드를 호출하기전에 한 번 직접 호출해줘야한다.

0개의 댓글