본문 바로가기

IT 인터넷/node.js

[node js] 동기와 비동기 프로그래밍

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

동기와 비동기의 차이점을 먼저 알아보자.


만약 해야 할 일이 일이 다음과 같이 있다고 하자 - 청소,빨래,설거지

동기방식은 청소를 하고 빨래를 하고 설거지를 하는 것이다.


그렇다면 비동기는 

청소 업체에 전화해서 청소를 맡기고,

청소 업체가 처리하는 동안 빨래 업체에 빨래를 맡기고, 

설거지 업체에 설거지를 맡기는 식이다. 

이렇게 비동기 방식은 효율적이면서 빠른 일처리를 할 수 있게 한다. 


완전 일치하지 않지만 대략 이렇다고 한다.


node js는 비동기 방식이 기본이다.  


node js 에서 DOCS에 들어가면 동기방식 function과 비동기 방식 function이 있다. 먼저 동기방식 function을 알아보자.  

아래 코드를 살펴보면 


//sync - 동기 

fs = require('fs');  // filesystem이라는 node 모듈을 불러온다. 

var text = fs.readFileSync('text.txt',{encoding:'utf8'});  // 문법에 맞게 적는다

console.log(text) 


이렇게 보면 동기방식은 별 특징이 없어 보인다.

내부적으로 보면 fs.readFileSync가 실행이 끝날 때 까지 console.log(text)는 실행이 안된다. 


확실히 이해하기 위해 비동기 방식 function을 보자.  

//async - 비동기

console.log(1);

fs.readFile('text.txt',{encoding:'utf8'},function(err,text){  //비동기 방식의 문법에 맞게 적는다. 

console.log(3);      

console.log(text);

});

console.log(4);


위의 코드를 보면 순서대로

1

3

text.txt 파일의 내용

4

가 출력될 거 같다.


하지만


1

4

3

text.txt 파일의 내용

순으로 출력이 되는데.


왜냐하면 fs.readFile을 읽고 바로 

console.log(4)가 실행된다. 이후 fs.readFile 실행이 끝나면

console.log(3)과 console.log(text) 를 실행하는 것이다.



'IT 인터넷 > node.js' 카테고리의 다른 글

[node js] Express 설치  (0) 2017.11.09
[node js] 서버 만들기 코드 분석  (0) 2017.11.08
[node js] 콜백 함수  (0) 2017.11.08
[node js] 다른 사람이 만든 npm 사용해보기  (0) 2017.11.07
[node js] npm  (0) 2017.11.07