본문 바로가기
전공공부

자바스크립트의 비동기와 병렬처리

by 시아나 2024. 10. 13.

자바 스크립트는 비동기로 병렬처리를 하는가?

자바스크립트는 싱글 스레드 언어이다.
즉, 한번에 하나의 일만 수행할 수 있다는 것이다. 

그럼 어떻게 병렬처리를 할까?

자바스크립트는 병렬처리를 하지 않는다.
그럼 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 통신의 결과 처리를 위해

 

이 점은 다음에 정리해서 돌아오도록 하겠다.

 

참고한 글https://medium.com/@kimjaedeok/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%8A%94-%EC%96%B4%EB%96%BB%EA%B2%8C-%EB%B3%91%EB%A0%AC%EC%B2%98%EB%A6%AC%EB%A5%BC-%ED%95%A0%EA%B9%8C-806520785f0d

'전공공부' 카테고리의 다른 글

프론트 버블링에 대하여  (0) 2024.12.12
자바스크립트 변수 호이스팅이란?  (1) 2024.11.25
CleanCode 4장, 5장  (1) 2024.11.14
react 공부하면서 처음 든 느낌  (0) 2021.11.11