본문 바로가기

JavaScript

Promise의 기능과 필요한 이유

프로미스(Promise)는 자바스크립트 비동기 처리에 사용되는 객체입니다

비동기 처리는 특정 코드의 연산이 끝나길 기다리지 않고 다음 코드를 처리하는것을 의미합니다

비동기에 대한 예시로 전화와 문자가 있습니다

전화를 받을때 하던일을 멈추고 전화를 받고 상대방에게 바로 대답을 해야되지만 문자는 확인만 한 후 나중에 응답해줘도 됩니다

전화는 동기적으로 처리하고있고 문자는 비동기적으로 처리를 하고 있습니다 

비동기의 장점으로는 비동기요청에 따른 결과가 반환되는 시간 동안 다른 작업을 수행할 수 있습니다.

비동기 처리를 하기 위한 방법으로는 콜백 함수로 비동기처리를 하는 방법이 있습니다

하지만 비동기처리를 많이 해야되는 경우 콜백안에 콜백을 여러번 사용해야되고 코드의 가독성이 떨어집니다

이것을 콜백지옥이라고 합니다

이러한 문제를 해결하기 위해 프로미스를 사용하면 됩니다

프로미스는 resolve(),reject(), then()같은 프로미스 API를 사용하여 콜백지옥보다 가독성이 좋은 코드를 작성 할 수 있게 해줍니다

프로미스는 3가지의 상태를 가집니다

  • Pending(대기) : 비동기 처리 로직이 아직 완료되지 않은 상태
  • Fulfilled(이행) : 비동기 처리가 완료되어 프로미스가 결과 값을 반환해준 상태
  • Rejected(실패) : 비동기 처리가 실패하거나 오류가 발생한 상태

먼저 Pending(대기)상태가 있는데new Promise()로 메서드를 호출하면 펜딩상태가 됩니다

여기서  resolve() API를 호출하면 Fulfilled(이행)상태가 됩니다

이행상태부터 then() api를 사용하여 처리 결과값을 받을 수 있습니다

마지막으로 Rejected(실패)상태가 있습니다

reject() api를 호출하면 실패상태가 됩니다

실패상태가 된다면 catch()메서드를 사용하여 실패 처리의 결과값을 받을 수 있습니다

'JavaScript' 카테고리의 다른 글

프로토타입 체인  (0) 2022.09.22
프로토타입  (0) 2022.09.21
객체지향 프로그래밍이란?  (1) 2022.09.21
클래스와 인스턴스  (0) 2022.09.21
함수란?  (0) 2022.09.20