동기(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 |