이미지 출처 : 인프런
<aside> <img src="/icons/search_gray.svg" alt="/icons/search_gray.svg" width="40px" /> A 함수(호출자)가 B 함수(피호출자)를 호출하는 상황이라고 가정
</aside>
동기/비동기: 호출자(A)가 피호출자(B)의 처리 결과를 기다리는지 여부
동기: 피호출자의 처리 결과를 받아서 다음 작업 수행 → 호출자/피호출자 순차적 수행
A는 B 작업이 끝날 때까지 다른 작업을 수행하지 않고 B의 반환값을 기다림
비동기: 피호출자의 처리 결과를 기다리지 않고 다음 작업 수행 → 호출자/피호출자 동시 수행
B가 작업을 완료하면 콜백 함수 호출 (혹은 프로미스 활용)
블로킹/논블로킹: 호출자(A)가 피호출자(B)에게 제어권(함수 실행 권리) 전달 여부
블로킹: 피호출자에게 제어권 전달 → 피호출자가 작업을 완료할 때까지 대기
A가 B를 호출하여 제어권 전달 후, B의 작업 완료를 기다림
논블로킹: 피호출자에게 제어권 전달 안함 → 호출자는 자신의 작업 계속 수행
A가 B를 호출할 때 제어권은 넘기지 않고, A와 B가 각자 스레드에서 작업 수행
주니어 웹 개발자가 알아야 할 ‘비동기 통신’ | 요즘IT