비동기 쉽게 이해하기
- 카페에서 커피를 주문받는 카운터가 있다
- Synchronous(동기적), Blocking
- 카운터에서 커피를 주문을 받으면, 주문을 받는 순간 커피를 만들기 시작
- 커피를 만드는 동안, 주문은 할 수 없고 다음 손님들은 대기한다
- 커피를 다 만들고 손님에게 제공하는 순간, 다음 손님이 주문을 한다
- 처음의 커피를 제공하는 작업이 끝날 때까지, 다음 작업을 막는다
- Asynchronous(비동기적), non-blocking
- 카운터에서는 커피를 주문을 받고, 뒤에서는 주문 받은 커피를 만든다
- 커피를 제공받는 순서가 꼭 주문을 받은 순서와 일치하지는 않는다
- 만드는데에 단계가 더 필요한 커피는 더 늦게 제공받을 수 있다
- 처음부터 다음의 커피 주문이 막힘없이 카운터에서 받아들인다
고차함수와 Callback
- 고차함수(Higher order function)의 개념을 리뷰한다
- 다른 함수를 인자(argument)로 전달받을 수 있다
- 다른 함수를 리턴할 수 있다
- 고차함수는 콜백 함수와 커리 함수의 상위 개념이다
- 콜백함수를 전달받은 caller 함수는
- 함수 내부에서 이 콜백 함수를 호출(invoke)할 수 있다
- caller는 조건에 따라 콜백 함수의 실행 여부를 결정한다
- 호출하지 않을 수도 있고, 여러 번 실행할 수도 있다