NodeJS

[NodeJS] - 동기(Sync)와 비동기(Async)

Riucc 2018. 10. 15. 14:09

동기(Sync)와 비동기(Async)

 

var fs = require('fs');

// 'data1.txt : 두번째, data2.txt : 네번째' 라고 적혀있음


// 동기(Sync)

console.log("첫번째");

var data1 = fs.readFileSync('data1.txt', {encoding:'utf-8'});

console.log(data1);

console.log("세번째");

var data2 = fs.readFileSync('data2.txt', {encoding:'utf-8'});

console.log(data2);

console.log("다섯번째");


console.log("<br/>");


// 비동기(Async)

console.log("첫번째");

fs.readFile('data1.txt', {encoding:'utf-8'}, function(err, data1){

    console.log(data1);

});

console.log("세번째");

fs.readFile('data2.txt', {encoding:'utf-8'}, function(err, data2){

    console.log(data2);

});

console.log("다섯번째");



파일을 읽어 출력하는 예제를 통해서 동기(Sync)와 비동기(Async)를 설명해봅니다

결과를 보면, 비동기와 동기의 결과가 다릅니다


그렇다면 왜? 비동기를 사용해야할까요?


안드로이드에서도 API를 사용하여 데이터들을 불러올 때 비동기를 사용합니다

그 이유는 어플이 로딩되는데 동기로 데이터를 불러오면 

그 데이터를 불러올 때까지 로딩이 안되는 현상이 발생하기 때문이죠


웹사이트에서도 마찬가지입니다

비동기로 하지 않고 동기로 수많은 데이터를 불러오거나 참조할 시

그 데이터를 불러올 때까지 웹사이트는 멈춰있거나 로딩되지 못합니다


그렇기 때문에, 로딩은 로딩 따로 데이터 불러오는건 따로 처리하여

효율성을 높이는 것이지요! 그렇다고 너무 남발하는 것도 시스템 성능이 저하됩니다

이유는 여러 개를 비동기로 돌린뒤 완료되면 콜백함수(결과)가 실행되는 형태이기 때문이죠

그래서 잘 구분하고 잘 써야합니다!