[기술면접/JS] 동기/비동기

강민혁·2023년 2월 14일
0

기술면접 | JS

목록 보기
2/17

자바스크립트의 동기/비동기에 대해 설명하세요

Keyword

요청,결과,대기(pending), 순서, call stack, single thread, asynchronous callback, task queue, event queue, event loop


Script

먼저 동기(Synchronous)는 요청결과가 동시에 일어나는 것을 말합니다. 요청 결과가 오래걸리더라도, 요청한 자리에서 결과가 주어질때까지 대기하며 순서에 맞춰 진행됩니다. 반면, 비동기(Asynchronous)는 요청결과가 동시에 일어나지 않습니다. 요청에 대한 응답을 즉시 처리하지 않더라도, 대기 시간동안 다른 요청에 대한 처리가 가능합니다.

자바스크립트 엔진은 기본적으로 Single Thread로 동작합니다. 그래서 단일 호출 스택(call stack)이 존재하며, 이는 한 번에 하나의 일만 순차적으로 처리합니다.

그래서 자바스크립트에서는 이렇게 하나의 작업이 완료될때까지 기다려야 하는 문제점을 해결하기 위해서 비동기 콜백(Asynchronous Callback)을 사용합니다. 작업이 완료될때까지 대기가 필요한 callback 함수들은 자바스크립트 runtime에서 task queue(event queue)에 저장됩니다. 그리고 task queue의 작업들은 call stack의 작업이 모두 끝났을 때, event loop를 통해 call stackcallback 함수를 넣어주고, 마지막에 실행됩니다.


Additional


Reference

BOOK - modern javascript deep dive

profile
with programming

0개의 댓글