비동기 JavaScript
- 이전 페이지 JS 콜백
- 다음 페이지 JS Promise
"나중에 끝내겠습니다!"
기타 함수와 병행하여 실행되는 함수는 비동기(asynchronous)으로 불립니다
JavaScript setTimeout()는 좋은 예제입니다
비동기 JavaScript
이전 장에서 사용한 예제는 많이 간소화되었습니다.
그 목적은 콜백 함수 문법을 보여주는 것입니다:
예제
function myDisplayer(some) { document.getElementById("demo").innerHTML = some; } function myCalculator(num1, num2, myCallback) { let sum = num1 + num2; myCallback(sum); } myCalculator(5, 5, myDisplayer);
위의 예제에서는myDisplayer
함수 이름입니다.
그것은 인자로 전달됩니다 myCalculator();
。
현실 세계에서 콜백은 대부분 비동기 함수와 함께 사용됩니다.
JavaScript는 표준 예제입니다 setTimeout();
。
시간 초과를 기다립니다
JavaScript 함수를 사용할 때 setTimeout();
그 때, 시간 초과가 발생할 때 실행할 콜백 함수를 지정할 수 있습니다:
예제
setTimeout(myFunction, 3000); function myFunction() { document.getElementById("demo").innerHTML = "I love You !!"; }
위의 예제에서는myFunction
콜백으로 사용됩니다.
함수(함수 이름)는 매개변수로 전달되어 setTimeout();
。
3000은 타임아웃 전의 밀리초수이므로 3초 후에 호출됩니다 myFunction();
。
함수를 인자로 전달할 때는 괄호를 사용하지 마세요.
정확: setTimeout(myFunction, 3000);
오류: setTimeout(myFunction(), 3000);
함수 이름을 다른 함수에 인자로 전달하지 않으면, 항상 전체 함수를 전달할 수 있습니다:
예제
setTimeout(function() { myFunction("I love You !!!"); }, 3000); function myFunction(value) {}} document.getElementById("demo").innerHTML = value; }
위의 예제에서는function(){ myFunction("I love You !!!"); }
콜백으로 사용됩니다. 이는 완전한 함수입니다. 완전한 함수는 setTimeout()에 매개변수로 전달됩니다。
3000은 타임아웃 전의 밀리초수이므로 3초 후에 호출됩니다 myFunction();
。
기다림 간격:
JavaScript 함수를 사용할 때 setInterval();
각 간격마다 실행할 콜백 함수를 지정할 수 있습니다:
예제
setInterval(myFunction, 1000); function myFunction() { let d = new Date(); document.getElementById("demo").innerHTML = d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds(); }
위의 예제에서는myFunction
콜백으로 사용됩니다.
함수(함수 이름)는 매개변수로 전달되어 setInterval();
。
1000은 간격의 밀리초수이므로 myFunction();
초마다 한 번 호출됩니다。
파일을 기다리는 중
외부 자원(스크립트나 파일 등)을 로드하는 함수를 생성하면, 내용이 완전히 로드되기 전에 이를 사용할 수 없습니다。
이는 콜백을 사용하는 최적의 시간입니다。
이 예제에서는 HTML 파일을 로드합니다 (mycar.html
파일이 완전히 로드된 후 웹 페이지에서 HTML 파일을 표시합니다:
파일을 기다리는 중:
function myDisplayer(some) { document.getElementById("demo").innerHTML = some; } function getFile(myCallback) { let req = new XMLHttpRequest(); req.open('GET', "mycar.html"); req.onload = function() { if (req.status == 200) { myCallback(this.responseText); } else { myCallback("에러: " + req.status); } } req.send(); } getFile(myDisplayer);
위의 예제에서는myDisplayer
콜백으로 사용됩니다.
함수(함수 이름)는 매개변수로 전달되어 getFile()
。
아래는 mycar.html
의 복사본:
mycar.html
<img src="img_car.jpg" alt="좋은 자동차" style="width:100%"> <p>자동차는 이동을 위해 사용되는 바퀴가 달린 자력 기동차입니다.</p> <p>이 용어의 대부분의 정의는 자동차가 주로 도로에서 운행되도록 설계되었으며, 일반적으로 1에서 8명의 좌석을 가지고 있으며, 일반적으로 네 개의 바퀴를 가지고 있다는 것을 명시합니다.</p> <p>(위키백과)</p>
- 이전 페이지 JS 콜백
- 다음 페이지 JS Promise