비동기 프로그래밍

비동기로 소통할게요

위와 같은 표현을 들어보거나 사용해보신 적 있으신가요? 실시간 소통이 아닌 각자 업무 흐름에 맞춰 원하는 시간에 소통하고 싶을 때 주로 사용하는 표현인데요.

자바스크립트에서 특정 작업들은 비동기적(Asynchronous)으로 실행된다는 특징이 있습니다. 프로그래밍에서 비동기는 어떤 걸 의미하는 지 살펴보도록 할게요.

동기? 비동기?


Untitled

동기와 비동기는 엄밀하진 않지만 전화와 문자로 비유할 수 있어요.

여러분의 친한 친구 5명에게 직접 생일 파티 초대 전화를 돌려야한다고 생각해봅시다. 전화의 경우 한 번에 한 명의 상대만 연결할 수 있기 때문에 모두와 통화하기 위해선 꽤 오랜 시간이 소요될 거에요.

만약 문자를 사용한다면 어떨까요? 5명 각각에게 동시에 문자를 보낼 수 있을 뿐만 아니라 여러 친구와 번갈아가며 소통할 수 있겠죠?

Untitled

이렇게 동기는 특정 작업이 모두 끝난 후에 다음 작업을 실행한다고 볼 수 있어요. 비동기는 이와 다르게 특정 작업의 완료 여부와 상관없이 다음 작업을 실행하는 것을 뜻해요.

비동기 프로그래밍에서는 A → B → C → D 순으로 코드가 실행될 때 만약 A에서 연산이 오래 걸릴 경우 나머지 B → C → D가 실행을 멈추거나 기다리지 않고 그대로 실행돼요.

기본적으로 대부분의 자바스크립트 코드는 동기적으로 실행돼요. 하지만 Web API 호출과 같은 특정 작업의 경우 비동기로 처리되어요. 대표적인 비동기 작업으로 fetch를 사용한 네트워크 요청이 있어요.

동기적 프로그래밍