자바스크립트는 single thread 입니다.

사실 이 친구, 하나의 일을 할 때 하나밖에 못하는데 그 일이 오래 걸린다면?

다른 작업들은 대기해야 한다.

이러한 문제점을 해결하기 위해 비동기로 어떠한 일을 수행한다. (Event Loop를 이용한)

 Web API or libuv 라이브러리를 이용한 비동기 처리

Web API or libuv 라이브러리를 이용한 비동기 처리

하나의 요청이 다른 요청의 결과에 의존한다면?

예시를 보자.

Untitled

response2는 response1의 결과가 필요하다.

그렇지만, 둘 다 병렬적으로 API에 전송 → response2는 response1의 결과가 오기 전에 요청

이런 문제를 해결하기 위해 Callback 함수, Promise, Async/Await이 나왔다.

Callback 함수

Callback : 다른 코드의 인수로써 넘겨주는 실행 가능한 코드를 의미한다.

Untitled

콜백 함수는 함수를 전달받은 함수 안에서 호출된다.

간단한 예시로는 setTimeout, forEach를 보자.