TIL

Promise

백단비 2023. 8. 7. 16:56

😳 Promise란?

ES6에서 도입된 비동기 작업을 처리하기 위한 객체
콜백 지옥(callback hell)의 코드 복잡성을 해결하고, 가독성을 향상시키기 위해 도입되었다.

 

 

🌀 Promise는 세 가지 상태를 가진다.

 

  👉 Pending(대기 중) : 비동기 작업이 아직 완료되지 않은 상태

  👉 Fulfilled(이행됨) : 비동기 작업이 성공적으로 완료된 상태

  👉 Rejected(거부됨) : 비동기 작업이 실패한 상태

 

 

🌀 Promise 객체의 기본적인 메서드

 

  👉 then : Promise가 성공적으로 이행되면 호출되는 메서드

  👉 catch : Promise가 거부되었을 때 호출되는 메서드, 오류 처리를 위해 사용

  👉 finally : Promise가 이행되거나 거부되었을 때 무조건 호출되는 메서드

 

 

🌀 Promise 사용 방법

 

new Promise()를 사용해서 Promise 객체를 생성한다.
Promise 생성자 함수는 비동기 작업을 처리하는 함수를 인자로 받는데
비동기 작업이 성공적으로 이행될 때 호출되는 resolve 콜백함수를 첫 번째 인자로 받고,
비동기 작업이 실패할 때 호출되는 reject 콜백함수를 두 번째 인자로 받는다.

 

 

 

🌀Promise 체이닝 

  👉 promise 체이닝은 여러 개의 비동기 작업을 연결하여 순차적으로 처리하는 기법을 말한다.
  👉 각각의 비동기 작업은 then메서드를 사용하여 처리된 결과를 다음 비동기 작업으로 넘겨주는 작업을
        반복적으로 연결해서 연속적으로 비동기 작업을 수행할 수 있다.
  👉 Promise 체이닝을 사용하면 중첩된 콜백함수를 사용하지 않아도 되기 때문에
        코드의 가독성이 높아지고 유지 보수가 쉬워진다.

 

 

  🌪 Callback hell

 

⬇⬇⬇⬇⬇⬇

  🌞 Promise

 

Promise는 비동기 작업을 처리하는데 많은 장점이 있지만 단점도 존재한다.

  

 

🌀 Promise의 단점

 

  👉 단일 결과 반환

 : 비동기 작업이 여러 개의 결과를 반환해야 할 때가 있을 수도 있다.

  👉 오류 처리의 한계

 : Promise는 catch메서드를 통해 오류 처리를 할 수 있지만, 처음 발생한 오류만을 처리하기 때문에 Promise 체인 내에서 두 번째 이후로 발생하는 오류를 잡을 수 없다.

  👉 무한 지연

 : 비동기 함수 내에서 Promise를 처리하지 않고 바로 리턴하는 경우, 비동기 작업이 완료되지 않아 무한 지연 문제가 발생할 수 있다.

 

 

 

참조

https://yoo11052.tistory.com/155

https://youtu.be/JB_yU6Oe2eE

 

320x100

'TIL' 카테고리의 다른 글

SEO(Search Engine Optimization) 이란?  (0) 2023.08.24
웹 표준, 웹 접근성, 웹 호환성  (1) 2023.08.19
Callback 함수  (1) 2023.08.06
동기(Synchronous)와 비동기(Asynchronous)  (1) 2023.08.03
AJAX란 무엇인가?  (1) 2023.07.31