[1일1js] 일반 비동기 프로그래밍 개념

Lee Tae-Sung·2021년 9월 15일
0

JS

목록 보기
38/56

https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Asynchronous/Concepts

일반 비동기 프로그래밍 개념

목적 : 비동기 프로그래밍의 기본 개념과 웹 브라우저 및 JavaScript에서 어떻게 나타나는지 이해합니다.

비동기식?

=> 맥에서 많이 봤었지 특히 .... 12년식 내 맥북에서 ....

특히 컴퓨터에 여러 프로세서 코어를 사용할 수 있는 시대에 컴퓨터 처리 능력을 잘 사용하지 않습니다.

이러한 작업을 비동기적으로 실행할 수 있는 API를 제공하는 것은 사용 중인 프로그래밍 환경(웹 개발의 경우 웹 브라우저)에 달려 있습니다.

차단 코드

비동기 기술은 특히 웹 프로그래밍에서 매우 유용합니다. 웹 앱이 브라우저에서 실행되고 브라우저에 제어를 반환하지 않고 집중적인 코드 덩어리를 실행하면 브라우저가 정지된 것처럼 보일 수 있습니다. 이것을 차단 이라고 합니다 .

=> blocking code

왜 이런거야? 대답은 JavaScript가 일반적으로 단일 스레드 이기 때문 입니다. 이 시점에서 우리는 쓰레드 의 개념을 도입할 필요가 있습니다.

스레드

앞서 말했듯이 많은 컴퓨터에는 이제 여러 개의 코어가 있으므로 한 번에 여러 작업을 수행할 수 있습니다. 여러 스레드를 지원할 수 있는 프로그래밍 언어는 여러 코어를 사용하여 여러 작업을 동시에 완료할 수 있습니다.

JavaScript는 단일 스레드입니다

얼마 후 JavaScript는 이러한 문제를 해결하는 데 도움이 되는 몇 가지 도구를 얻었습니다. 웹 작업자를 사용하면 여러 JavaScript 청크를 동시에 실행할 수 있도록 작업자라고 하는 별도의 스레드로 일부 JavaScript 처리를 보낼 수 있습니다.

=> 다음 1일1js는 웹 작업자에대한 페이지로...!
https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API

일반적으로 작업자를 사용하여 기본 스레드에서 값비싼 프로세스를 실행하여 사용자 상호 작용이 차단되지 않도록 합니다.

=> 값비싼 프로세스 ?

하지만 이번에는 계산을 위해 작업자를 사용합니다. 여기에서 작업자의 코드를 볼 수 있습니다.작업자.js. 이제 버튼을 클릭하면 브라우저에서 날짜 계산이 끝나기 전에 단락을 표시할 수 있습니다. 작업자가 계산을 마치면 최종 날짜를 콘솔에 기록합니다. 첫 번째 작업은 더 이상 두 번째 작업을 차단하지 않습니다.

=> worker.js라는 파일을 통해 객체를 만든다
=> 이 원리를 자세히 알 필요는 없을 것 같고 해당 작용을 해주는걸 비동기로 생각하면 될 듯!

비동기 코드

웹 작업자는 꽤 유용하지만 한계가 있습니다. 중요한 것은 DOM 에 액세스 할 수 없다는 것입니다.

작업자가 UI를 업데이트하기 위해 직접 할 수 있는 것은 없습니다. 작업자 내부에 100만 개의 파란색 원을 렌더링할 수 없습니다. 기본적으로 숫자 처리만 수행할 수 있습니다.

두 번째 문제는 작업자에서 실행되는 코드가 차단되지는 않지만 기본적으로는 여전히 동기적이라는 것입니다.

이 경우 작업 A가 서버에서 이미지를 가져오는 것과 같은 작업을 수행하고 작업 B가 필터를 적용하는 것과 같은 작업을 이미지에 수행한다고 가정해 보겠습니다. 작업 A 실행을 시작한 다음 즉시 작업 B를 실행하려고 하면 이미지를 아직 사용할 수 없기 때문에 오류가 발생합니다.

=> 동기 / 비동기 관련해 필요성을 여기서 확인하게 되었다. 또한 더 나아가 promises의 필요성까지 유추됨.

=> 공부해야할게 너무 많다. promises 관련 문서도 보기
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

결론

최신 소프트웨어 설계는 프로그램이 한 번에 둘 이상의 작업을 수행할 수 있도록 비동기 프로그래밍을 사용하는 방식으로 점점 더 발전하고 있습니다.

profile
긍정적인 에너지를 가진 개발자, 이태성입니다.

0개의 댓글