비동기

정종화·2021년 6월 24일
0

[JS/Node] 비동기

비동기가 뭐야?
ㄴA 와 B가 스벅에 갔다.
A가 아아를 주문하고 주문한 아아를 받을때까지 B가 아무것도 하지 못하고(음료주문X) 기다리는것 즉,
A가 아아를 받는 시점과 B의 주문 시점이 동일한것이 동기적!

비동기적이라 함은, A가 아아를 주문하고 아직 A의 아아가 나오지 않았더라도 B가 주문할 수 있는것 즉,
A가 아아를 받는 시점과 B의 주문 시점이 동일하지 않은것이 비동기적!

어떤 음료를 주문하느냐에 따라 만드는 시간이 다를 수 있기에 A가 아아 주문, B가 따뜻한 녹차 주문 후, 먼저 만들어진 음료가 나왔을때 주문한 사람을 찾는것이 콜백.

때에 따라 다르겠지만 위와 같은 상황에서는 비동기적으로 음료를 판매하는것이 훨씬 더 효율적이고 속도도 빠르다.

Async JavaScript
비동기적이 좋은건 알겠는데 그래서 위의 예시를 예로 들자면 주문한 음료를 빨리 만들어진 순서대로 말고 주문한 순서대로 손님에게 드리고 싶을땐 어떻게 해?

-아래의 3가지(Callback, Promise, Async / Await)을 사용할 수 있지!

Callback = 함수안에 함수를 넣음으로서 순서를 정함, 함수가 엄청나게 많을 경우 작성하기도 어렵고 가독성이 많이 떨어짐(Callback Hell).
Promise = .then으로 함수 실행의 순서를 정해줄 수 있음, 위의 callback과 같이 함수들이 많아질수록 작성하기가 어렵고 가독성이 떨어짐(Promise Hell)>
Async / Await = 꼭 Async가 있어야 Await을 쓸 수 있고, 위 두가지 방법보단 훨씩 작성하기도 편하고 가독성도 올라간다. 다만 아직까진 Async / Await으로 되지 않는 부분도 있기에 그럴땐 위의 두가지 방법으로 코딩을 하면 된다.

(위 3가지는 비동기의 발전을 보여줌, 처음 Callback에서부터 Promise를 거쳐 Async / Await까지 각각의 단점들을 보완하고자 점점 더 나은것을 내놓음으로서 발전해옴을 볼 수 있다.)

타이머 API
- setTimeout(callback, millisecond) = 일정 시간 후에 함수를 실행.
- clearTimeout(timerId) = 실행중인 타이머를 종료.
- setInterval(callback, millisecond) = 일정 시간의 간격을 가지고 함수를 반복적으로 실행.
- clearInterval(timerId) = 반복 실행중인 타이머를 종료.

.
.
.
.
.
.
.
.
.
🌤🥲🌤

profile
Hello?

0개의 댓글