“비동기로 소통할게요”
위와 같은 표현을 들어보거나 사용해보신 적 있으신가요? 실시간 소통이 아닌 각자 업무 흐름에 맞춰 원하는 시간에 소통하고 싶을 때 주로 사용하는 표현인데요.
자바스크립트에서 특정 작업들은 비동기적(Asynchronous)으로 실행된다는 특징이 있습니다. 프로그래밍에서 비동기는 어떤 걸 의미하는 지 살펴보도록 할게요.
동기와 비동기는 엄밀하진 않지만 전화와 문자로 비유할 수 있어요.
여러분의 친한 친구 5명에게 직접 생일 파티 초대 전화를 돌려야한다고 생각해봅시다. 전화의 경우 한 번에 한 명의 상대만 연결할 수 있기 때문에 모두와 통화하기 위해선 꽤 오랜 시간이 소요될 거에요.
만약 문자를 사용한다면 어떨까요? 5명 각각에게 동시에 문자를 보낼 수 있을 뿐만 아니라 여러 친구와 번갈아가며 소통할 수 있겠죠?
이렇게 동기는 특정 작업이 모두 끝난 후에 다음 작업을 실행한다고 볼 수 있어요. 비동기는 이와 다르게 특정 작업의 완료 여부와 상관없이 다음 작업을 실행하는 것을 뜻해요.
비동기 프로그래밍에서는 A → B → C → D 순으로 코드가 실행될 때 만약 A에서 연산이 오래 걸릴 경우 나머지 B → C → D가 실행을 멈추거나 기다리지 않고 그대로 실행돼요.
기본적으로 대부분의 자바스크립트 코드는 동기적으로 실행돼요. 하지만 Web API 호출과 같은 특정 작업의 경우 비동기로 처리되어요. 대표적인 비동기 작업으로 fetch
를 사용한 네트워크 요청이 있어요.