👍 No I’ll be Back, But Yes CallBack, 콜백 함수

자바스크립트 호스트 환경이 제공하는 여러 함수를 사용하면 *비동기(asynchronous)*를 원하는 때에 동작이 시작하도록 할 수 있다.

일방적으로 하나의 코드를 실행된다면, 그 코드가 진행되는 동안에는 다른 동작을 할 수 없는 상황에 놓인다. 만약 당신이 전국의 치킨집 데이터를 불러온다고 생각해보자. 데이터를 불러오는 건 좋은데 이걸 다 불러올 때까지는 많은 시간이 걸릴 것이다. 그런데 그 불러오는 시간 동안 아래에 있는 코드로 움직여지지 않고 멈춰있다면 이게 얼마나 비효율적이겠는가….

맛집 갔더니 대기하라고 해서 옆에서 긴 줄 기다리면서 시간을 보내는 것을 생각해보라. 얼마나 비효율적인가. (요즘은 테이블링이나 플레이트 등 좋은 어플들이 많더만!!) 그를 방지하기 위해서 나온 것이, 도와줘요! 콜백맨! 이다.

콜! 부르다, 백! 나중에! 즉, 나중에 부르는 함수를 말한다.

https://youtu.be/TAyLeIj1hMc

위의 강좌에서 설명해주는 예시를 보자.

function solution(arr) {
    return arr.reduce(**(acc, cur) => acc+cur**);
}

위의 함수는 reduce를 이용한 함수인데 다음과 같이 생각해보자.

  1. 배열이 reduce라는 메소드를 사용하겠다고 명령했다.
  2. reduce는 배열이 명령하자, 자신이 사용하기 위해 쓸 acc와 cur을 이용해 무언가를 만드는 도구를 쓰기로 했다.
  3. 이제 reduce는 배열이 자신을 호출해서 일해라, 노예야! 이랴이랴! 하면 호출을 받았으니 도구를 통해 작업을 진행하게 된다.

콜백이라는 것은 바로 이 ‘도구’와 같은 것이다. 배열은 reduce를 항상 부르지 않는다. 하지만, 동작하라고 명령을 내리는 순간 그때부터 동작을 하는 것이다. 도구의 동작은 reduce 안에서만 이루어지기 때문에 배열은 reduce에게 일을 시켜놓고 바로 딴데로 가도 된다.

즉, 한마디로 reduce한테 일시키고 배열은 마이웨이하는데, 그 마이웨이 하는 동안에 ‘reduce가 하고 있는 일’이 콜백함수라고 생각하면 된다.

👍 Promise, 공부하면서 많이 들어봤지만 두려웠던 그 이름.

진짜 많이 들어봤는데, 이게 대체 뭐인지 모르겠다.. 싶다가 생활코딩 강의를 들으면서 좀 감이 잡혔다. 왜 Promise라는 단어를 쓰는지, 그리고 이걸 통해서 어떠한 내용들이 진행되는지를 일단 스스로 이해한 내용을 바탕으로 작성해보도록 하겠다.

JavaScript - Promise (then, catch)