동기 vs 비동기

동기: CPU 계산으로 인해 즉시 처리가 가능한 대부분의 코드는 동기적인 코드

비동기: 별도의 요청, 실행 대기, 보류 등과 관련된 코드는 비동기적인 코드

콜백 지옥이란?

콜백 함수를 익명 함수로 반복해서 전달하다 보니 코드의 들여쓰기가 감당하기 힘들 정도로 깊어지는 현상.

주로 이벤트 처리나 서버 통신과 같이 비동기적인 작업을 수행하기 위해 이런 형태가 자주 등장하는데 가독성도 떨어지고 코드를 수정하기도 어렵다는 단점이 있다.

익명함수를 기명함수로 바꾸어 가독성을 높인 예

Untitled

→ 가독성은 높아졌으나 일회성 함수를 전부 변수에 할당하는 것은 비효율적인 작업이다.

ES6 Promise를 사용하여 콜백 지옥을 해결한 예

Untitled

Untitled

Untitled

→ new 연산자와 함께 호출한 Promise의 인자에 넘겨주는 콜백 함수는 호출할 때 바로 실행된다.