자바 스크립트는 비동기로 병렬처리를 하는가?
자바스크립트는 싱글 스레드 언어이다.
즉, 한번에 하나의 일만 수행할 수 있다는 것이다.
그럼 어떻게 병렬처리를 할까?
자바스크립트는 병렬처리를 하지 않는다.
그럼 Promise는 병렬처리가 아닌가?
지금부터 자바스크립트의 비동기 동작을 알아보자
Promise.resolve().then(()=>console.log(1));
console.log(2);
console.log(3);
Promise.resolve().then(()=>console.log(4));
해당 코드에서 Promise는 JS의 비동기 함수이다.
결과를 보면 2,3이 비동기로 호출한 1,4보다 먼저 나오는 것을 볼 수 있다.
즉 JS에서 비동기는 task를 바로 실행하는 것이 아니라 queue나 어딘가에 넣어뒀다가
동기가 끝난 후에 실행하는 것이다.
그럼 비동기 끼리는 병렬처리 될 수 있지 않을까?
아니다.
아까 말했든 JS는 싱글스레드 언어이기 때문에 비동기도 직렬처리된다.
(async () => {
for (let i = 0; i < 1000; i++) {
console.log(3);
}
})();
(async () => {
for (let i = 0; i < 1; i++) {
console.log(4);
}
})();
만약 비동기가 병렬처리된다면 3을 출력하는 도중에 4를 출력해야 한다.
하지만 4는 항상 마지막에 출력된다.
그럼 비동기는 왜 쓰는 걸까?
1. 동기의 문제점 때문에
2. api 통신의 결과 처리를 위해
이 점은 다음에 정리해서 돌아오도록 하겠다.
'전공공부' 카테고리의 다른 글
프론트 버블링에 대하여 (0) | 2024.12.12 |
---|---|
자바스크립트 변수 호이스팅이란? (1) | 2024.11.25 |
CleanCode 4장, 5장 (1) | 2024.11.14 |
react 공부하면서 처음 든 느낌 (0) | 2021.11.11 |