[NodeJS] 동기와 비동기 작업

2023. 12. 20. 22:01BE/NodeJS

728x90

웹, 앱 어플리케이션에 익숙하지 않으면 동기, 비동기 작업은 익숙치 않은 개념입니다. 동기와 비동기 작업에 대해 코드로 살펴보고 넘어가겠습니다.

먼저 동기(Synchronous) 작업은 이전의 작업이 끝나면 그 다음 작업을 수행하는 작업을 말합니다. 예제 코드는 아래와 같습니다.

console.log(1);
var data = fs.readFileSync('data.txt');
consol.log(data);


위 코드를 실행하면 파일을 읽은 후에 읽어진 데이터가 로그에 찍히게 됩니다.
동기 작업의 장점은 순차적으로 실행하기 때문에 작업의 순서를 파악하는데 용이하다는 것입니다. 하지만, 데이터를 읽는 시간이 오래걸리는 경우, 그 다음 코드가 실행되지 않는 단점이 존재합니다.

비동기(Asynchronous) 작업은 이전 작업과 상관없이 수행되는 작업을 말합니다. 예제 코드는 아래와 같습니다. 

console.log(2);
fs.readFile('data.txt', function(err, data){
	console.log(3);
    console.log(data)
});
console.log(4);


위 코드를 실행하면 2, 4, 3 순서로 로그에 찍히게 됩니다. 그 이유는 파일을 읽는데 시간이 걸리는 경우, 우선 4를 로그에 찍고 작업이 완성되면 3을 로그에 찍기 때문입니다.

비동기 작업의 장점은 순차적으로 작업을 실행하지 않기 때문에 여러 작업을 병렬적으로 실행할 수 있다는 것입니다. 그렇기 때문에 여러 작업을 빠르게 처리하는 것을 목표로하는 NodeJS에서는 비동기 작업을 기본 작업 방식으로 채택하고 있는 것 같습니다.

'BE > NodeJS' 카테고리의 다른 글

[NodeJS] Get, Post의 특징  (0) 2023.12.21