코딩하고자용 블로그

[Node.js] 동기, 비동기, 콜백함수란? 본문

Computer Science/Web

[Node.js] 동기, 비동기, 콜백함수란?

코딩하고자용 2020. 7. 28. 23:45

Node.js를 공부하다가 이해가 되지 않아서 정리한다.

우선 콜백함수를 이야기하기 전에 동기(Synchronous)와 비동기(Asynchronous)에 대하여 이야기해보자.

예를 들어 청소, 설거지, 요리라는 3가지의 해야 할 일이 있다고 가정하자.

 

동기는 위 그림처럼 하나씩 하나씩 해나간다. 

그에 반해 비동기는 업체에 전화를 하여 청소, 설거지, 요리를 업체에서 동시에 하게 한다.

 

이 때 업체가 바로 객체이며, 무엇인가 일을 객체에게 시키고, 동기처럼 그 일이 끝나기를 기다리는게 아니라 그 객체가 나를 다시 부를 때까지 내 할 일을 하는것이 비동기이다.

 

돌아와 콜백함수에 대하여 이야기해보자.

 

콜백함수는 함수 안에서 특정한 시점에 호출되는 함수를 의미한다. 다시 말해 함수 자체를 다른 함수 파라미터 인자로 전달해서, 다른 함수 안에서 파라미터로 전달된 함수를 호출하는 것을 말한다.

 

아래의 코드를 보며 이해해보자.

plus = function(a,b, callback){
	var result = a+b
    callback(result);
}

plus(2,3, function(res){
	console.log(res);
})

plus라는 함수를 선언하고, a와 b와 callback을 받는다.(여기서 callback은 함수 이름)

6번 라인에서 2와 3을 더한 값인 5(result)를 callback의 변수로서 보내어 정의된대로 res 값을 출력하는 형식이다.

 

어떠한 함수를 사용하기 위한 변수를 만들어 그 함수가 실행되도록 하는 방식이며, 이러한 callback 함수가 쓰이는 이유가 바로 위에서 말한 비동기!!! 때문이다.

 

만약 서버로부터 데이터를 받아오는 어플리케이션이 있다고 할 때, 동기적 처리를 한다면 데이터를 다 받아오는 코드의 실행이 완전히 끝난 뒤에 이후의 코드를 처리 할 것이다. 받아오는 데이터 크기가 작고 갯수가 적다면 상관없겠지만 만약 받아오는 데이터의 크기가 크거나 갯수가 매우 많다면 너무나 애플리케이션이 비효율적으로 변할 것이다. 

 

이러한 불편을 없애기 위해 비동기적으로 처리하며, 그 처리 방법이 바로 콜백함수인 것이다.

 

 

[참고]

https://velog.io/@matisse/%EB%8F%99%EA%B8%B0-%EB%B9%84%EB%8F%99%EA%B8%B0

https://dalkomit.tistory.com/65

https://pro-self-studier.tistory.com/89

'Computer Science > Web' 카테고리의 다른 글

2020 프론트엔드, 백엔드 개발자 로드맵  (0) 2020.07.31
[인터넷] 호스팅이란?  (0) 2020.07.31