[JavaScript] Callback과 Promise

ITmakesmeSoft·2022년 10월 29일
0

JavaScript

목록 보기
5/11

비동기 처리의 단점

비동기 처리의 경우 Web API로 들어오는 요청 순서가 아닌, 작업이 완료되는 순서에 따라 처리된다는 특징이 있다.

이 경우 실행과정을 예상할 수 없어 코드의 실행 순서가 불명확해진다는 단점이 생김.

이 경우 Callback 함수를 사용하면 순서를 명확히 할 수 있음


Callback

Callback Function

  • 다른 함수의 인자로 전달되는 함수
  • 동기, 비동기 구분없이 사용 가능
  • 비동기 작업이 완료된 후 실행할 적업을 명시하는데 사용되는 콜백함수를 비동기 콜백(Asynchronous callback)이라 부름
  • 비동기 코드를 작성하다 보면 콜백 함수로 인한 콜백 지옥(Callback Hell)은 필연적으로 나타나게 되며, 이는 코드의 가독성을 해치고, 유지보수를 어렵게 만듦

Callback Hell(콜백 지옥)

  • 비동기 처리를 위한 콜백을 작성할 때 마주하는 문제를 Callback Hell(콜백 지옥)이라 하며, 그때의 코드 작성 형태가 마치 피라미드와 같다고 하여 Pyramid of Doom(파멸의 피라미드)라고도 부름

Callback 함수를 사용하는 이유

  • 명시적인 호출이 아닌 특정한 조건 혹은 행동에 의해 호출되도록 작성할 수 있음
  • 비동기 처리를 순차적으로 동작할 수 있게 함

Promise

  • Callback Hell 문제를 해결하기 위해 등장한 비동기 처리를 위한 객체
  • 비동기 작업의 완료 또는 실패를 나타내는 객체
    • then(callback)
      • 요청한 작업이 성공한 경우, callback 실행
      • callback은 이전 작업의 성공 결과를 인자로 전달 받음
    • catch(callback)
      • 하나라도 실패한 경우 callback 실행
      • callback은 이전 작업의 실패 객체를 인자로 전달 받음
  • axios로 처리한 비동기 로직이 항상 promise 객체를 반환
  • then()을 통해 계속해서 이허가면서 작성(chaning) 가능

AJAX

비동기 통신 웹 개발 기술(AJAX, Asynchronous Javascript And XML)은 비동기 통신을 이용해 화면 전체의 새로고침 없이 서버로 요청을 주고받아 화면의 일부분만을 업데이트 할 수 있도록 하는 기술.

  • Axios는 AJAX를 위한 라이브러리 중 하나

AJAX의 특징

  • 페이지 새로고침 없이 서버에 요청
  • 서버로부터 응답(데이터)을 받아 작업을 수행
profile
💎 Daniel LEE | SSAFY 8th

0개의 댓글