이번 시간에는 callback과 promise에 대해 알아보자.
자바스크립트에서는 함수가 받아들이는 값을 int, string 형 뿐만 아니라 함수로도 받아들일 수 있다. 인자로 받아들인 함수를 다시 호출하는 기능, 이것을 callback이라고 부른다.
이 콜백은 콜백지옥이라는 단점을 가지고 있다.
Callback이란 처음엔 조금 어렵지만 한번 이해하게 되면 굉장히 편한 기능이긴 한데 이를 연속적으로 사용하게 되면 유지보수가 힘들어 진다는 치명적인 단점이 존재한다.
코드가 계속 안으로 파고드는 형식의 모양은 가독성이 굉장히 별로이게 된다. 이게 콜백지옥이다.
실제로 로그인 기능을 구현할 때 로그인 정보를 받아들여 비밀번호를 확인하고, 옳다면 유저 정보를 가져오고 틀리다면 에러 메시지를 출력하는 등 if-else문이 callback 중간 중간에 들어가야 하는 경우가 자주 있다.
그래서 callback을 4번,5번... 연속적으로 호출하게 될 경우 콜백지옥에 걸리게 된다
이 단점을 극복하기 위해 Promise가 생겼다.
Promise는 기본적으로 callback과 기능이 같다. 하지만 차이점은 Promise는 작업이 끝난 후 Promise 자체 메소드인 .then()을 호출하게 된다.
Promise에서 작업이 실패하였을 경우 자동으로 .catch() 메소드가 호출된다. 따라서 callback과 같이 함수 호출 중간에 if-else를 사용하는 것이 아닌 .catch()로 한번에 해결할 수 있는 장점이 있다.
콜백이 유용하긴 하지만 콜백지옥의 치명점을 보완하기 위해 생긴 Promise, 그 유용함을 파악해 잘 사용하면 굉장히 좋겠다라는 생각이 든다!