Javascript

자바스크립트의 동기와 비동기

아라라_ 2023. 5. 4. 23:30

“ 지연되는 프로젝트에 인력을 더 투입하면 오히려 더 늦어진다. ”

Frederick Philips Brooks
Mythical Man-Month 저자
728x90

오늘 aws을 다녀왔는데요 기조 연설을 듣는중 동기와 비동기 이야기가 나와 오늘은 동기와 비동기에 대해 설명하고자합니다.

 

동기

동기는 작업을 순차적으로 처리하느 방식입니다. 즉, 한 작업이 끝날 때 차지 

동기(Synchronous)는 작업을 순차적으로 처리하는 방식입니다. 즉, 한 작업이 끝날 때까지 다른 작업은 실행되지 않습니다. 이 방식은 코드가 간단하고 직관적이며, 작업의 순서가 중요한 경우에 유용합니다.

 

 

비동기

반면에, 비동기(Asynchronous)는 작업이 병렬로 처리되는 방식입니다. 한 작업이 실행 중일 때 다른 작업도 실행됩니다. 이 방식은 작업의 순서가 중요하지 않을 때 유용하며, 대부분의 경우 더 효율적입니다.

비동기 방식은 일반적으로 콜백(Callback), 프로미스(Promise) 또는 Async/Await를 사용하여 구현됩니다. 이러한 방식을 사용하면 비동기적으로 실행되는 작업의 결과를 처리하고, 작업이 완료될 때까지 기다릴 필요가 없습니다.

 

예시

동기 방식은 우리가 일상적으로 경험하는 일과 유사합니다. 예를 들어, 택배를 받을 때, 배송기사가 우리의 집으로 와서 직접 손으로 택배를 전달하는 것입니다. 이때 배송기사는 우리의 집으로 와서 손으로 택배를 전달할 때까지는 다른 일을 할 수 없습니다. 이것이 동기 방식입니다. 프로그래밍에서도 함수가 실행되는 동안 다른 함수를 실행할 수 없습니다. 하나의 함수가 끝나기 전까지는 다른 함수를 실행할 수 없습니다.

반면에 비동기 방식은 택배가 도착했을 때, 우리에게 알림 메시지가 온 다음에 우리가 직접 택배를 찾아가는 것과 유사합니다. 이때 배송기사는 다른 집으로 가서 택배를 배송할 수 있습니다. 프로그래밍에서도 함수가 실행되는 동안 다른 함수를 실행할 수 있습니다. 비동기 방식은 여러 개의 함수가 병렬적으로 실행되는 것을 의미합니다. 예를 들어, 웹 페이지에서 이미지 파일을 로딩하는 동안, 다른 자바스크립트 코드가 실행될 수 있습니다. 

 

예시2

좀더 쉬운 예를 들자면

동기는 친구한명과의 대화가 완전히 끝날때 까지 다른 친구는 카톡을 기다려야합니다.

하지만 비동기는 친구한명의 답장을 기다리는동안 다른친구에게 카톡을 보낼 수 있습니다.