일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 자바스크립개념
- ion-range
- angular
- aab 배포
- oh-my-zsh
- JavaScript
- change detection
- 이미지바꾸기
- Ionic
- angular5
- 테두리굵기
- 변화감지
- ChangeDetectorRef
- VSCode
- php
- border-width
- code .
- hashchange
- rxjs
- NVM
- typescript
- sealize
- Sentry
- IONIC3
- getElementsByClassName
- Git
- Visual Studio Code
- error
- fromEvent
- zsh
- Today
- Total
hsunny study blog
[TypeScript] setInterval() 사용하기 본문
Syntax
setInterval(function, milliseconds, param1, param2, ...)
파라미터 |
설명 |
function |
필수. 실행할 함수 |
milliseconds |
필수. 함수 실행주기 (단위: milliseconds) |
param1,param2, ... |
선택. 추가적으로 넘길 함수 (지원: IE9<) |
참고 사이트: https://www.w3schools.com/jsref/met_win_setinterval.asp
typescript setInterval() not working 으로 꽤 삽질했던 내용이다.
현상
Pure Javascript로 사용한 Timer 방식은 아래와 같다.
이 방식을 그대로 TypeScript에 옮기려 했으나 에러가 발생했다.
/* this.thick = setInterval(this.Timer(), 1000); //////★★★★★★★★ */
문제가 발생한 부분은 ★로 표시한 부분들이다.
생각대로라면 this.counter 값인 300을 불러오고 이를 하나씩 차감해 나가는 것인데, 1000 milliseconds 주기에 맞춰 NaN만 찍혔다.
this.counter 변수를 제대로 찾기 못해서 발생한 문제였다. (*this 바인딩에 대해 찾아보기)
해결
()=> 로 표현하는 것을 화살표 함수라고 하며, 이를 이용하여 해결할 수 있었다.
화살표함수는 ES6에서 새롭게 나온 개념이다.
화살표함수를 이용하여 Timer 함수 내부에서 사용하는 this가 가르키는 값은 바로 바깥의 함수(혹은 클래스)의 this값을 사용할 수 있다.
화살표함수를 이용하지 않았을 때에 this는 바인딩되지 않은 this로, 바깥의 함수(혹은 클래스)에서 정의하는 값과 다르다.
바인딩 알아보기: http://blog.jeonghwan.net/2017/10/22/js-context-binding.html
'programming > javascript' 카테고리의 다른 글
querySelector vs querySelectorAll vs getElementsByClassName (0) | 2019.06.25 |
---|---|
sort()를 이용한 정렬 (0) | 2019.06.17 |
배열 중복 요소 제거 (0) | 2019.06.17 |
Ajax (0) | 2017.07.22 |
클립보드 복사하기 (0) | 2017.07.09 |