-> 특정 코드의 연산이 끝날 때까지 코드의 실행을 멈추지 않고, 다음 코드를 먼저 실행하는 js의 특성을 의미한다.
즉 a -> b -> c 순서대로 작동하는 코드가 있다고 가정을 해보자
그러면 여기서 b를 먼저 실행하고 -> a -> c 순대로 작동을 한다고 보면 된다.
console.log("hello--1");
setTimeout(function () {
console.log("hello --2");
}, 3000);
console.log("hello---3");
결과값은 hello 1, 3 ,2 순이다.
즉 setTimeout은 비동기 방식으로 실행되기 때문에 3초를 기다렸다가 hello -- 2가 뜨는게 아니라, hello --3을 찍고 hello --2로 진행되는 것이다.
가령 맛집을 간다고 가정 했을때, 항상 줄이 길기 때문에 예약을 해놓고 다른 곳을 이리저리 돌아다니죠?
근데 식당에서 자리가 생겼다고 전화강 왔어요.
다시예를 들면, 자리가 준비된 시점, 즉 데이터가 준비된 시점에 원하는 동작을 수행 할 수 있습니다.(가게에 와서 자리에 앉는다 = 특정값을 출력한다.)
-> promise나 async를 이용해야한다.