본문 바로가기

JavaScript

CallBack Function

동기(synchronous) : 요청하면 바로 응답을 받는다.

비동기(asynchronous) : 요청한 내용을 언젠간 응답해 줄 것이라는 약속.


콜백함수

자바스크립트 비동기를 표현하고 관리하는 가장 일반적인 기법.

 

Blocking Code : 콜백함수 사용하지 않는 코드

var fs = require("fs");

var data = fs.readFileSync('input.txt');

console.log(data.toString());
console.log("Program has ended");

결과  : input.txt 파일의 내용을 다 읽어온 후 'Program has ended' 출력

 

 

Non-Blocking Code : 콜백함수 사용하는 코드

var fs = require("fs");

// readFile : 비동기식으로 파일을 읽는 함수
fs.readFile('input.txt', function (err, data) {
    if (err) return console.error(err);
    console.log(data.toString());
});

console.log("Program has ended");

결과readFile() 메소드가 실행 된 후, 프로그램이 메소드가 끝날때까지 대기하지 않고 곧바로 다음 명령어로 진행하였기 때문에, 'Program has ended'를 출력 한 후에 텍스트 내용을 출력.

 

콜백함수를 사용하는 이유

callback 함수를 사용하여 이렇게 프로그램의 흐름을 끊지 않는다.
Non-Blocking 코드를 사용하는 서버는 Blocking 코드를 사용하는 서버보다
더 많은 양의 요청을 빠르게 처리 할 수 있게된다.

'JavaScript' 카테고리의 다른 글

arrow function  (0) 2019.08.19
구조분해할당  (0) 2019.08.19
setTimeout(), Promise, async/await 비교  (0) 2019.07.29
클로저  (0) 2019.07.24
JSON  (0) 2019.07.23