c, c++, java, python을 공부한 나에게 프로그래밍 언어는 항상 동기적으로 동작하는 줄 알았다.
c, c++, java는 비동기적으로 여러가지 작업을 처리하려면 thread또는 process를 만들어 사용해야 한다.
(python은 어떻게 작동하는지 잘 모른다)
물론 javascript도 동기적으로 동작한다. 하지만 javascript는 비동기적으로 동작하기도 한다!
대표적으로 setInterval(), setTimeout() 함수가 비동기적인 함수이다.
나중에 이해한 내용
c, c++, java는 thread를 만들거나 fork로 process를 만들어 여러가지 작업을 동시에 작업한다.
js는 thread를 만들거나 fork를 할 수 없다. 대신 Promise 또는 webapi를 사용해 여러가지 작업을 비동기적으로 (동시에) 작업할 수 있다. setInterval, setTimeout이 webapi의 함수들이다.
c++의 thread는 운영체제가 스케줄링 해주는 대로 작업이 진행된다.
js는 특정 요청들(timer, fetch등 webapi에서 처리하는 작업들)에 대해서만 다른 thread(webapi의 thread)에서 처리하고, 코드는 main thread에서 처리한다.
'web > javascript' 카테고리의 다른 글
youtube html에 삽입하기(youtube iframe_api) (0) | 2023.08.31 |
---|---|
JS Promise.all & Promise.race (0) | 2023.02.21 |
JS async & await (0) | 2023.02.20 |
JS Promise (0) | 2023.02.20 |
js 정규표현식 (regular expression) (0) | 2022.08.01 |