[javascript] 콜백과 프로미스의 차이점

자바스크립트에서 비동기 작업을 다룰 때 콜백과 프로미스는 매우 중요합니다. 그러나 두 가지 모두 비동기 동작을 다루지만 각각의 특징이 있습니다. 이 글에서 콜백과 프로미스의 차이점과 장단점을 살펴보겠습니다.

콜백

콜백 함수는 다른 함수의 인자로 넘겨지고, 해당 함수의 작업이 완료되었을 때 호출됩니다. 이를 통해 비동기 작업을 다룰 수 있습니다. 하지만 콜백 지옥이라고 불리는 현상이 발생할 수 있습니다. 콜백 안에 콜백이 계속 중첩되어 가독성이 떨어지고 유지보수가 어려워집니다.

doSomething((result1) => {
  doSomethingElse(result1, (result2) => {
    doAnotherThing(result2, (result3) => {
      // ...
    });
  });
});

프로미스

프로미스는 콜백 지옥을 피하기 위한 해결책으로, 비동기 작업을 연결하여 처리하는 기능을 제공합니다. 프로미스는 resolvereject 두 가지 상태를 갖고 있으며, 비동기 작업의 성공 및 실패를 처리할 수 있습니다. 또한 then 메서드를 이용해 연결된 작업을 보다 가독성 있게 처리할 수 있습니다.

doSomething()
  .then((result1) => {
    return doSomethingElse(result1);
  })
  .then((result2) => {
    return doAnotherThing(result2);
  })
  .then((result3) => {
    // ...
  })
  .catch((error) => {
    // handle error
  });

결론

콜백과 프로미스 중 어떤 것을 선택할지는 상황에 따라 다를 수 있습니다. 콜백은 단순하고 구체적인 비동기 작업을 처리할 때 유용할 수 있지만, 복잡한 비동기 작업이 많이 발생하는 경우에는 프로미스가 가독성과 유지보수 측면에서 더 유리할 수 있습니다.

더 많은 정보를 원하시면 아래 참고 자료를 참고하세요.

참고 자료