728x90
반응형
JavaScript에서 함수는 일급 객체로 Object 타입이며 다른 일급객체(String, Array, Number, ...)와 동일하게 사용할 수 있다.
이 중 Callback Function은, 특정 함수에 매개변수로서 전달된 함수를 지칭한다. 그리고 Callback Function은 함수를 전달받은 함수 안에서 호출되게 된다.
예시
server.listen(port, hostname, ()=>{
console.log("나는 콜백 함수");
});
여기서 매개변수로 전달된 () => {console.log("나는 콜백 함수")} 가 Callback Function이다.
콜백 함수 사용의 이유
Node.js에서는 Callback 함수가 매우 많이 사용된다. 그 이유는 Non-Blocking I/O 때문이다.
예제를 통해 Callback 함수가 사용되었을 때와 사용되지 않았을 때를 비교해보자.
const fs = require("fs");
const path = "test.txt"
// path == 파일 위치
const data = fs.readFileSync(path);
console.log(data.toString());
console.log("End");
// test.txt
Callback Function Test txt File...
결과를 보면 test.txt를 읽어와서 출력하기 전까지 그 이후의 작업이 멈춰있는 것을 볼 수 있다.
이 코드는 Blocking Code 형태의 코드이다.
const fs = require("fs");
const path = "test.txt"
// path == 파일 위치
fs.readFile(path, (err, data) => {
if (err) return console.error(err);
console.log(data.toString());
});
console.log("End");
// test.txt
Callback Function Test txt File...
결과를 보면 "End"를 출력하는 작업이 먼저 실행되고 test.txt의 내용이 출력된다. 이렇게 출력되는 이유는 Non-Blocking Code이기 때문이다. 이전 작업이 끝나기를 기다리지 않고 실행된다. 이런 방식을 비동기(Non-Synchronous) 처리라고 한다.
728x90
반응형
'Back-end & Server > Node.js' 카테고리의 다른 글
[Node.js] 클라이언트 (0) | 2023.07.30 |
---|---|
[Node.js] Event Loop (0) | 2023.07.29 |
[Node.js] index.js 파해쳐보기 (0) | 2023.07.29 |
[Node.js] Node.js의 핵심 기능 (0) | 2023.07.28 |
[Node.js] package.json 알아보기 (0) | 2023.07.28 |