본문 바로가기

Back-end & Server/Node.js

[Node.js] Callback Function

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