JS | 동기, 비동기

BOZZANG·2022년 5월 10일
0

JavaScript

목록 보기
11/14
post-thumbnail

🎇 동기, 비동기

🔑 동기

Synchronous 동시에 발생하는 single thread

한 작업이 실행되는 동안 다른 작업은 멈춘 상태를 유지하고 자신의 차례를 기다리는 것

▪ 순차적, 직렬적으로 수행한다.
▪ 요청을 보냈다면, 응답을 받아야 다음 동작이 이루어진다.
▪ 작업 중단 blocking 이 발생한다.
▪ 순차적으로 실행되기 때문에, 어떤 작업이 수행중이라면 다음 작업은 대기해야 한다.


🔑 비동기

Asynchronous 동시에 발생하지 않는

어떠한 요청을 보내면 그 요청이 끝날 때 까지 기다리는 것이 아니라, 응답에 관계 없이 바로 다음 동작이 실행되는 방식

▪ 병렬적으로 수행한다.
▪ 작업 종료 여부에 관계 없이 다음 작업을 실행한다.
▪ 동기 방식과는 달리 실행 순서 보장이 되지 않는다.
▪ 작업 중단이 발생하지 않는다.


🎇 JS는 동기식 언어

JS는 싱글 스레드 기반으로 한 번에 하나의 작업을 수행한다.
또한 모든 기본적으로 동기 방식으로 코드를 해석한다.

즉, 한 작업이 실행되는 동안 다른 작업은 멈춘 상태를 유지하고, 자신의 차례를 기다린다.
예를 들면 맥도날드에서 여러 사람들이 줄을 서고 키오스크를 이용하여 결제하는 것이다.


🤔 JS의 비동기식 처리가 왜 필요해?

예를 들어서 웹 페이지가 로딩되거나 어떠한 동작 하나가 1분 이상 걸린다고 했을 때,
이 동작이 끝날 때 까지 웹페이지는 화면에 나타나지 않거나 다음 동작을 수행하는데 지장이 생긴다.

그렇게 되면 속도가 느리고 응답이 없는 웹 페이지가 되어버린다.

그렇기 때문에 JS가 웹 사이트에서 동작할 때, 비동기적으로 동작할 수 있어야 한다.

🤔 어떻게 JS를 비동기식으로 처리해?

이를 위해서는 JS의 런타임 환경을 알야아 한다.

비동기 작업을 수행해야 하는 코드는 즉시 실행만 되고 어딘가로 던져지는데,
이후에 작업이 완료되면 비동기 작업을 정의할 때 같이 넣어준 콜백 함수를 가지고 후속 작업을 진행한다.

JS의 비동기 처리를 위해 사용되는 것들이 있는데 그 중에서 Promise에 대해서 알아보도록 하겠다.

0개의 댓글