callback 함수 = 함수를 인자로 받아 다른 함수를 실행시키는 함수
function func7(){
document.write("func7이 실행되었습니다.<br>");
}
function callback(num){
for( let i=1; i<=5; i++ ){
num(i)
}
}
document.write("*** 71. 콜백함수 ***<br>");
callback(func7);
예를 들어, 이러한 코드가 있다면, 실행 순서는 callback -> func7*5번 실행
동기 vs 비동기
단일 스레드라고도 불리며, 하나의 일을 처리한 뒤 다음 일을 처리하는 방식. 자바스크립트는 동기식이며, memory heap + call stack으로 구성되어 있다.
비동기를 사용하기 위해서는 콜백함수를 넣어줘야 한다. readFile(data, option, callback)으로 활용 가능하다.
서버를 구축하는데 있어 listen 함수 또한 오래걸리는 작업이므로 callback을 통한 비동기 방식을 택한다.
var fs = require("fs");
//Sync
console.log(1);
var data = fs.readFileSync("data.text", { encoding: "utf-8" });
console.log(data);
//Async
console.log(2);
fs.readFile("data.text", { encoding: "utf-8" }, function (err, data) {
console.log(3);
console.log(data);
});
console.log(4);
이러한 코드가 있다면 실행순서는 1 -> data -> 2 -> 4 -> 3 -> data이다.
즉, Sync에서는 순차적으로 코드를 처리하고 Async는 data를 읽어오는 동안 4를 먼저 출력하게 된다.(동시 실행)