오늘부터 TIL을 조금 다르게 써보기로 했다. 프론트엔드 면접 예상질문에서 한 가지 질문을 정하고 그 질문에 답을 하는 식으로 TIL 글을 구성할 생각이다. 질문에 답을 하기 위해서 먼저 선행하는 개념을 알아보고, 그 개념을 바탕으로 맨 하단에서 답을 적는 방식으로 진행하겠다.
오늘의 질문 : 자바스크립트에서 비동기 처리는 왜 하나요?
이 질문에 대답하기 위해서는 동기와 비동기에 대해 이해해야 한다. 동기? 비동기? 일단 동기와 비동기는 데이터를 처리하는 방식이다. 동기 방식은 작업을 순서대로 수행한다. 서버에서 요청을 보냈을 때 응답이 돌아와야 다음 동작을 수행할 수 있다. 즉 A작업이 모두 진행 될때까지 B작업은 대기해야한다.
비동기 방식은 반대로 요청을 보냈을 때 응답 상태와 상관없이 다음 동작을 수행 할 수 있다. 즉 A작업이 시작하면 동시에 B작업이 실행된다. A작업은 결과값이 나오는대로 출력된다.
자, 그럼 다시 질문을 보자. "자바스크립트에서 비동기 처리는 왜 하나요?" 저 질문은 일단 자바스크립트가 본디 동기 방식이라는 말을 함의한다. 정말일까?
그렇다. 자바스크립트는 기본적으로 동기적이고 single-threaded한 언어다. 하지만 비동기 언어로 오해되곤 하는데 그 이유는 개발자들이 자바스크립트를 비동기식으로 동작하도록 조작하기 때문이다. 왜?
드디어 오늘의 질문에 대한 답을 할 수 있게 되었다.
화면에서 서버로 데이터를 요청했을 때 서버가 언제 그 요청에 대한 응답을 줄지도 모르는데 마냥 다른 코드를 실행 안 하고 기다릴 수는 없기 때문이다. 만약 100개의 요청을 보낸다고 가정했을 때, 동기 처리라면 코드를 실행하고 기다리는데 수십 분이 걸릴 것이다.
간단히 말하자면, 많은 요청을 처리할 때 비동기 방식이 빠르고 효율적이니까!
참조 : https://velog.io/@daybreak/%EB%8F%99%EA%B8%B0-%EB%B9%84%EB%8F%99%EA%B8%B0-%EC%B2%98%EB%A6%AC