📚 이론정리/JS & TS
✏️ 동기와 비동기
서카츄
2023. 11. 1. 02:00
오늘은 동기와 비동기에 대해서 정리해 보려고 한다.
그림으로 보자면 왼쪽이 `동기`, 오른쪽이 `비동기`이다.
데이터 처리 모델을 쉽게 표현하자면 이렇게 생겼는데,
이 방식에는 크게 동기와 비동기식 처리 모델이 존재한다.
동기(Synchronous : 씽크로나이즈)
동기는 데이터의 요청한 결과가 한 자리에서 동시에 일어나는 것을 말한다.
요청을 하면 시간이 얼마나 걸리던지 요청한 자리에서 결과가 주어져야한다.
즉, 서버컴퓨터가 작업이 끝날때까지 기다리는 통신이다.
ex) 내가 컴퓨터에 게임을 하려고 하는데, 게임을 하려면 그 전에 게임팩을 깔고, 게임을 실행한다!
비동기 (Asynchronous : 에이씽크로나이즈)
동시에 일어나지 않고, 요청한 결과는 동시에 일어나지 않는다.
동시에 여러가지 일을 할때 사용한다.
즉, 서버 컴퓨터가 작업이 끝날 때 까지 기다리지 않는 통신이다.
서버에 요청(등록, 수정, 삭제)등 저장이 안될 때 까지 기다리지 않고 다른작업을 진행한다.
axios에서 서버에서 데이터를 가져오는 애들은 대부분 `비동기` 이다.
기다려야 하기 때문에 동기작업으로 바꿔준다. (그래서 async, await)를 사용한다.
ex) 내가 카카오톡도 하면서 웹페이지(다른일)도 보는 것!
정리하자면
동기와 비동기는 어떤 작업 혹은 그와 연관된 작업을 처리하고자 하는 목적의 차이이다.
`동기`는 추구하는 `행위`와 `목적`이 동시에 이루어진다.
`비동기`는 추구하는 `행위`와 `목적`이 다를 수도 있고, 동시에 이루어지지도 않는다.
블록과 논블록
블록과 논블럭은 동기와 비동기와 연결되는 개념이다.
블록
동기의 개념에서 만들어진 상태이다.
크롬 브라우저가 실행되는 시간이 10분(요청)이라고 가정했을 시
크롬 브라우저가 오픈(결과) 되기전까지
다른 브라우저(사파리 등)은 계속 대기해야 하는 상태를 블록 상태라고 부른다.
논블록
비동기 개념에서 만들어진 상태이다.
크롬 브라우저가 실행되는 시간이 10분(요청)이라고 가정했을시
크롬 브라우저가 오픈(결과) 되기전까지 다른 브라우저(사파리 등)은
시간을 대기 하지 않고 제약없이 자유롭게 사용할수 있는 상황이다.
요약
블록은 동기의 개념에서 만들어진 상태이다.
논블록은 비동기 개념에서 만들어진 상태이다.