JavaScript에서의 비동기 프로그래밍 정리
javascript

JavaScript에서의 비동기 프로그래밍 정리

비동기적(Asychronous) 이란?

하나의 프로세서에서 작업이 진행중일 때 다른 프로세서에서 작업을 수행할 수 있게 하는 것.

 

JavaScript는 기본적으로 single threaded 이기 때문에 하나의 작업이 진행되는 동안 다른 작업을 진행할 수 없다.

더보기

Threads란?

Thread는 기본적으로 프로그램이 작업을 완료하는데 사용할 수 있는 단일 프로세스이다. 각 스레드는 한 번에 하나의 작업만 수행할 수 있다. 앞의 작업이 완료되어야만 다음 작업을 실행할 수 있다.

 

현재, 많은 컴퓨터들이 CPU 코어를 가지고 있다. 따라서 한번에 여러가지 일을 수행할 수 있다.

그래서 multiple thread를 지원하는 프로그래밍 언어는 멀티코어 컴퓨터의 CPU를 사용하여 여러 작업을 동시에 처리할 수 있다.

 

하지만, JavaScriptsingle thread를 지원하는 프로그래밍 언어이기 때문에 컴퓨터가 여러개의 CPU를 가지고 있어도 main thread에서만 작업을 수행할 수 있다.


 

JavaScript는 이러한 문제를 해결하기 위해 몇 가지 툴을 도입했다.

1. Web workers

Web workers 는 여러개의 JavaScript 청크를 동시에 실행할 수 있도록 별도의 thread(worker thread)로 보낼 수 있다. 따라서 시간이 오래 걸리는 처리는 worker thread를 활용하면 blocking 발생을 막을 수 있다.

 

하지만 Web workerDOM에 접근할 수 없다는 한계를 가지고 있다. 또한 worker에서 실행되는 코드가 함수를 사용할 때 동기적으로 실행된다는 점도 한계이다. 동기적인 수행에서 함수의 파라미터를 받아오지 못하는 경우 오류가 생길 수 있다.

 

따라서 이러한 문제를 해결하기 위해서는 브라우저를 통해 특정 작업을 비동기적으로 수행하는 것이 필요하다. 이것은 Promises를 사용하여 문제를 해결할 수 있다.

 

(추후 내용 보충 예정)

 

 

참고자료: https://developer.mozilla.org/ko/docs/Learn/JavaScript/Asynchronous/Concepts

'javascript' 카테고리의 다른 글

함수형 JavaScript 기본기  (2) 2021.07.29
함수형 JavaScript 공부하기  (0) 2021.07.29