-
자바스크립트 콜백자바스크립트,제이쿼리 2019. 10. 15. 23:33
콜백은 간단히 말해 나중에 호출할 함수이다. 콜백 함수도 일반적인 자바스크립트 함수일뿐입니다.
콜백 함수는 일반적으로 다른 함수에 넘기거나 객체의 프로퍼티로 사용합니다. 일반적으로 익명 함수로 사용하며 드물게는 배열에 넣어서 쓸 때도 있다.
console.log("Before timeout: " + new Date()); function f() { console.log("After timeout: " + new Date()); } setTimeout(f, 6*1000); //1분 console.log("I happen after setTimeout!"); console.log("Me too!");
초보자 입장에서 기대하는 순서와는 다르게 나올것입니다. 기대대로 된다면 좋겠지만, 그것은 비동기적이지 않습니다.
비동기적 실행의 가장 큰 목적, 가장 중요한 요점은 어떤 것도 차단하지 않는다는 것입니다. 자바스크립트는 싱글 스레드를 사용하므로, 우리가 컴퓨터에 60초 동안 대기한 후 코드를 실행하라고 지시한다면, 그리고 그 실행이 동기적으로 이루어진다면 꽤 골치 아픈일이 벌어집니다. 프로그램이 멈추고, 사용자 입력을 받아들이지 않고, 화면도 업데이트하지 않을 겁니다. 비동기적 테크닉은 프로그램이 이런 식으로 멈추는 일을 막아줍니다.
var start = new Date(); var i=0; var intervalId = setInterval(function() { var now = new Date(); if(now.getMinutes() !== start.getMinutes() || ++i>10) return clearInterval(intervalId); console.log(i + "///" + now); }, 5*1000);
setImeout은 콜백 함수를 한 번만 실행하고 멈추지만, setInterval은 콜백을 정해진 주기마다 호출하며 clearInterval을 사용할 때까지 멈추지 않습니다. 위 예제를 보면 setInterval이 ID를 반환한다는 사실을 알 수 있습니다. 이 ID를 써서 실행을 멈출 수 있습니다. clearInterval은 setInterval이 반환하는 ID를 받아 타임아웃을 멈춥니다.
출처 - 러닝 자바스크립트
'자바스크립트,제이쿼리' 카테고리의 다른 글
자바스크립트 프로토타입 (0) 2019.10.18 자바스크립트 프라미스 (0) 2019.10.16 자바스크립트 스코프 (0) 2019.10.13 자바스크립트 객체 (0) 2019.10.07 자바스크립트 null과 undeifned (0) 2019.10.07