[DAY10] 동기와 비동기 2

m1njae·2022년 1월 12일
0

22 Basic Challenge

목록 보기
10/25
post-thumbnail

Node.js에서 동기와 비동기가 코드 레벨에서 어떤 차이를 보이는지 알아보도록 하겠다. 파일을 읽어오는 과정으로 간단한 예시를 들어보자.

fs.readFile()fs.readFileSync()를 활용할 것이다.

메서드에 대한 사용법에 대해서 열심히 적혀있는데 자세한 부분은 잠시 접어두도록 하자. 코드 사용법을 보면fs.readFile()fs.readFileSync()에서 직관적인 차이점이 있는데, fs.readFile()fs.readFileSync()와는 다르게 인자로써 callback을 받는다는 점이다.

두 가지 메서드를 이용해서 'B' 라고 적혀있는 data.txt 파일을 읽어보자.

var fs = require('fs');

console.log('A');
var result = fs.readFileSync('data.txt','utf8');
console.log('C');
실행결과
A
B
C

fs.readFileSync()를 활용하게 되면 이처럼 동기적인 방식, 즉 순차적으로 코드가 실행되는 것을 알 수 있다.

var fs = require('fs');

console.log('A');
fs.readFile('data.txt','utf8', function(err, result){
  console.log(result);
});
console.log('C');
실행결과
A
C
B

앞서 순차적으로 'A','B','C'가 실행된 것과는 다르게 'A'를 실행시키고 , fs.readFileSync()의 결과를 가져오기 전에 'C' 를 실행시킨다. fs.readFileSync() 코드는 동작을 하고 있다가 작업이 마무리가 되면 인자로 받은 함수가 호출되면서 함수 안에 있는 코드인 'B'를 실행시킨 것이다. 즉, 요청을 보내고 결과를 받지 않아도 다음 동작이 실행하는 비동기적인 방식으로 처리가 되었음을 알 수 있다.

Node.js의 성능을 제대로 끌어올리기 위해서는 비동기적인 방식으로 작업을 하는 것을 지향하나 작업이 단순하고 성능이 대단한 것이 아니라면 이해하기 쉬운 동기적인 방식을 선택을 하는 것도 잘못된 선택은 아니다.

profile
할 수 있는 것부터 차근차근, 항해자의 공부 기록공간

0개의 댓글