복습 #8 Callback 과 비동기호출

rlcjf0014·2019년 11월 19일
0

프리코스_35

목록 보기
13/15

Introduction

이번 복습의 주제는 callback과 비동기호출 (Asynchronous Call)이다.

비동기 호출은 지난 주 오프라인 세션 때 fetch 와 API를 실제로 구현하며 사용해보며 어느정도
무슨내용인지 알고 있다.그래도 한번 정리하면서 복습하겠다.

Callback

먼저 콜백 함수란 다른 함수에 인자로 전달받을 수 있는 함수이다. 가장 흔히 볼 수 있는 예는 배열의 method들 중 reduce 혹은 map의 인자로 callback 함수가 자주 들어간다. 아니면 DOM과 html을 할 때 사용했던 event handler 의 인자로 콜백함수가 들어가기도 한다.

그리고 여기서 비동기 호출이란, 이 인자로 받은 함수를 바로 실행 (synchronously)할 수도 있고 나중에 필요할 때 (asynchronously) 실행할 수도 있다.

콜백함수를 간단히 알아봤으니 이제 동기와 비동기 호출을 조금 더 자세히 파보자.

Async Callback

동기 실행 함수는 요청을 받자마자 바로 실행되는 함수로 blocking이어서 요청을 받고 함수가 실행돼 값을 반환하는 동안 다른 일을 할 수 없고 요청과 결과가 동시에 일어난다.

하지만 비동기 실행함수는 non-blocking이기 때문에 요청에 대한 값의 반환, 즉 결과가 동시에
일어나지 않는다. 비동기 함수는 함수를 호출한 쪽에서 결과를 처리하지 않고 콜백함수를 통해 수행결과를 처리한다.

블로킹과 논블로킹의 더 깊은 이해를 위해 검색하던 중 다른 분의 사이트 https://victorydntmd.tistory.com/8 에서 좋게 정리해논 글이 있어서 가져왔다.

블로킹은 자신의 수행결과가 끝날 때까지 제어권을 갖고 있는 것을 의미합니다.
논블로킹은 자신이 호출되었을 때 제어권을 바로 자신을 호출한 쪽으로 넘기며, 자신을 호출한 쪽에서 다른 일을 할 수 있도록 하는 것을 의미합니다.

블로킹으로 인해 동기 실행 함수에서는 하나를 끝낼 때까지 다른 것을 못하지만 논 블로킹은 제어권을 넘기기 때문에 다른 일이 진행될 수 있고 또 프로세스 속도도 더 빠르다.

profile
Grow Joshua, Grow!

0개의 댓글