결론부터 말하면 Javascript는 싱글 스레드인 동기 언어이다!
동기는 코드를 실행하고 다 종료될때까지 기다렸다가 다음 코드를 실행한다.
비동기는 코드를 실행해서 진행시켜놓고 다음 코드를 실행하고 앞에 코드 진행이 종료되면 출력해준다.
비유로 하자면
동기는 커피를 주문하고 나올때까지 기다렸다 커피를 받아간 후에 다음 주문을 받는다.
비동기는 커피를 주문한 후 옆에서 기다리고 다음 손님들 커피 주문을 쭉쭉 받다가 커피가 나오면 받아간다.
이러면 동기에 비해 비동기가 매우 빠르게 처리된다.
하지만 비동기에 문제점이 있는데 1번코드의 출력값을 2번 코드에 사용해야 하는데
비동기의 경우 1번을 실행시켜 놓고 2번을 시작하니까 필요한 출력값이 아직 안나와서 undefinded가 뜰 것이다.
이럴때 비동기 처리가 필요하다.
비동기가 기다렸다가 결과를 받고 갈 수 있게 해준다.
비동기 처리에 사용되는 것은 콜백(callback) 함수, Promise, async와 await 가 있다.
나는 처음에 js가 비동기이여서 비동기 처리가 필요한 줄 알았는데
js 자체는 동기이지만 이제 서버 연결을 하기위해 ajax같은 비동기 통신코드를 사용하면서 중간에 비동기로 진행이 되고 비동기 처리로 비동기의 문제점을 해결해 준다라고 요약할수 있겠다!
자바스크립트 동작원리를 보면 이해가 더 잘될 것이다
https://ljtaek2.tistory.com/129?category=897337
자바스크립트 - 동작 원리
자바스크립트는 싱글 스레드 프로그래밍 언어이다. 싱글 스레드 런타임을 가지고 있다는 의미이다. 이것은 결국 한 번에 하나의 싱글 콜 스택(Call Stack)만을 가지고 있다는 말을 뜻한다. 여기서
ljtaek2.tistory.com
'Java Script' 카테고리의 다른 글
[Javascript] 나머지의 몫 구하는 법 (0) | 2022.10.18 |
---|---|
let과 const 차이점 (0) | 2022.10.05 |
배열 합치기 : concat 과 spread 차이 (0) | 2022.08.16 |
리액트에서 자주 쓰이는 자바스크립트 문법(ES6) (0) | 2022.08.15 |
[ React ] 구조 분해 할당 (0) | 2022.08.13 |