자바스크립트는 single thread기반의 언어입니다. 하나의 일을 처리한 뒤 다른 일을 처리할 수 있는 언어이죠. 그치만 우리가 자바스크립트를 사용하여 api요청 등을 보냈을 때, 그렇게 작동하지 않는다는 것을 우리는 알고있습니다. 이는 event loop때문입니다.
해당 글에서는 thread가 무엇인지. event loop는 무엇인지 알아보도록 하겠습니다.
Thread란 쉽게 말해 프로세스의 실행 가능한 가장 작은 단위를 말합니다. 즉 돌아가고 있는 프로그램이 처리할 수 있는 일의 가장 작은 단위를 말합니다. 이러한 프로그램이 갖는 스레드의 갯수에 따라 single thread와 multi thread로 나뉩니다.


위에서 던진 질문의 대답은 Yes이면서 No입니다. 이는 event loop입니다. .
js는 callstack이란 FILO(선입후출)인 단일 호출 스택을 가지고 있습니다.
호출스택
프로그램에서 우리가 어디에 있는지 기록하는 데이터 구조
function test(x, y) {
return x * y;
}
function testPrint(x) {
const a = test(x, 4);
console.log(a);
}
testPrint(5);
위와 같이 코드를 작성했을 때 Callstack에서 흐름을 확인해봅시다
들어온 순서대로 처리하기에 single thread언어입니다.
그럼 이때 의문점이 생길 것입니다.
fetch, setTimeout과 같은 비동기 요청을 보냈을 때 우리는 요청을 보내고 다른 작업을 할 수 있기 때문입니다.
이 대답에는 맞으면서 아니라고 할 수 있습니다. 그 이유는 비동기때문입니다.
위의 질문에 대답을 위해 Event Loop에 대해 알아보겠습니다.
우선 이벤트 루프는 아래 그림과 같은 구조를 갖습니다.

