사실 이 친구, 하나의 일을 할 때 하나밖에 못하는데 그 일이 오래 걸린다면?
다른 작업들은 대기해야 한다.
이러한 문제점을 해결하기 위해 비동기로 어떠한 일을 수행한다. (Event Loop를 이용한)
Web API or libuv 라이브러리를 이용한 비동기 처리
예시를 보자.
response2는 response1의 결과가 필요하다.
그렇지만, 둘 다 병렬적으로 API에 전송 → response2는 response1의 결과가 오기 전에 요청
이런 문제를 해결하기 위해 Callback 함수, Promise, Async/Await이 나왔다.
Callback : 다른 코드의 인수로써 넘겨주는 실행 가능한 코드를 의미한다.
콜백 함수는 함수를 전달받은 함수 안에서 호출된다.
간단한 예시로는 setTimeout, forEach를 보자.