📁 Promise 란
- 비동기 작업을 더 편하게 처리할 수 있는 기능
- 어떤 작업의 중간 상태를 나타내는 오브젝트 (어떤 종류의 결과가 반환됨을 promise)
- Promise 객체는 비동기 작업이 맞이할 미래의 완료/실패/결과 값을 나타냄
- new 키워드를 통해 객체 생성 → 변수 등에 할당해 활용 가능
- 하나의 콜백함수를 인자로 받음
- 반드시 3가지 상태 중 하나를 가짐
- 대기(pending): 초기 상태, 결과 값 반환X
- 이행(fullfilled): 연산이 성공적으로 완료된 상태
- 거부(rejected): 연산이 실패한 상태
- 이행/거부 상태를 가지면 더 이상 상태 변경 불가
- finally method: 프로미스의 성공/실패에 관계없이 처리만 되면 실행되는 함수 → 성공/실패 여부 모름
- 결과 값은 내부 객체이므로 then/catch로 접근 가능
📁 Promise 사용 이유
callback 함수로 비동기 작업 처리 시 코드의 깊이가 깊어짐
Promise 사용 시 코드의 깊이가 깊어지는 현상 방지 가능
📁 resolve, reject
- Promise 성공 시 resolve 호출, 실패 시 reject 호출
- resolve
- 호출 시 특정 값을 파라미터로 넣어주면, 해당 값을 작업이 끝난 뒤 사용 가능
- 작업이 끝난 뒤 다른 작업을 해야 할 경우 .then(...)을 붙여 사용
- reject
- 호출 시 특정 값을 파라미터로 넣어주면, 해당 값을 작업이 끝난 뒤 사용 가능 (.catch)
- 실패한 이유(실패 처리의 결과 값)가 담김
- then
- 프로미스가 이행되었을 때 실행되는 함수
- 통상적으로 then 메소드는 인수에 하나만 전달하여, 이행된 경우에만 다루고 실패했을 경우 catch 메소드를 사용해 제어
- catch
- 프로미스가 거부되었을 때 실행되는 함수
📁 Promise Chaining
then 메소드와 catch 메소드의 반환값은 또 다른 프로미스 객체를 반환해 서로 chaining 가능
catch 메소드는 상위에 체이닝되어 있는 어떤 함수에서 에러가 나더라도 에러 핸들링 가능
📁 Promise 단점
- 에러 발생 시 위치를 찾기 어려움
- 특정 조건에 따라 분기를 나누기 어려움
- 특정 값을 공유하며 작업을 처리하기 어려움
'Dev > Web' 카테고리의 다른 글
[React] JSX (0) | 2023.11.11 |
---|---|
[JS] async, await (0) | 2023.11.10 |
[JS] 비동기 (0) | 2023.11.10 |
[JS] ES6 (0) | 2023.11.09 |
[JS] 변수 (0) | 2023.11.09 |