😳 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
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 |