728x90
프로미스 후속 처리 메서드란?
- 프로미스가 fulfilled(성공) 상태 일 때는 프로미스의 처리 결과(데이터)를 가지고 무언가를 해야 하고 프로미스 rejected(실패) 상태 일 때는 프로미스 처리결과(에러)를 가지고 후속 처리를 해주어야 하는데 이때 필요한 후속 처리 메서드가 then | catch | finally이다
- 프로미스의 비동기 처리 상태가 변화하면 후속 처리 메소드에 인수로 전달한 콜백 함수가 선택적으로 호출된다 이때 후속 처리 메서드의 콜백 함수에 프로미스의 처리 결과가 인수로 전달된다
- 모든 후속 처리 메소드는 프로미스를 반환하며 비동기로 동작한다
. then()
- 프로미스를 반환한다
- then의 콜백 함수가 프로미스를 반환하면 그대로 반환하고 콜백 함수가 프로미스가 아닌 값을 반환하면 그 값을 암묵적으로 resolve 또는 reject 하여 프로미스를 생성해서 반환한다
- 두 개의 콜백 함수를 인자로 받는다
- 첫 번째 콜백 함수는 프로미스가 fulfilled(성공) 상태(resolve 함수가 호출된 상태)가 되면 호출된다 이때 콜백 함수는 프로미스의 비동기 처리 결과를 인수로 전달받는다
- 두 번째 콜백 함수는 프로미스가 rejected(실패) 상태(reject 함수가 호출된 상태)가 되면 호출된다 이때 콜백 함수는 프로미스의 에러를 인수로 전달받는다
- 즉, 첫 번째 콜백 함수는 성공 시 성공 처리 콜백 함수이고 두 번째는 실패 시 실패 처리 콜백 함수이다
// fulfilled
new Promise(resolve => resolve('fulfilled'))
.then(v => console.log(v), e => console.error(e)); // fulfilled
// rejected
new Promise((_, reject => reject(new Error('rejected')))
.then(v => console.log(v), e => console.error(e)); // Error:rejected
. catch()
- 한 개의 콜백 함수를 인수로 전달받는다
- 프로미스가 rejected(실패) 상태인 경우만 호출된다
- 언제나 프로미스를 반환한다
/* 아래 두개의 코드는 동일한 코드 이다 */
// rejected (catch 사용)
new Promise((_, reject) => reject(new Error('rejected')))
.catch( e => console.log(e)); // Error : rejected
// rejected (then 사용)
new Promise((_, reject) => reject(new Error('rejected')))
.then(undefined, e => console.log(e)); // Error : rejected
. finally()
- 한 개의 콜백 함수를 인자로 전달받는다
- 프로미스의 성공/실패 와 상관없이 무조건 한번 호출된다.
- 프로미스의 상태와 상관없이 공통적으로 수행해야 할 처리 내용이 있을 때 유용하다
- 언제나 프로미스를 반환한다
new Promise(() => {})
.finally(() => console.log('finally')); // finally
728x90
'JavaScript > 기초' 카테고리의 다른 글
자바스크립트[기초] 화살표 함수와 일반 함수의 차이 (0) | 2022.05.26 |
---|---|
자바스크립트[기초] 프로미스 에러 처리 | 프로미스 체이닝 (0) | 2022.05.01 |
자바스크립트[기초] ES6 프로미스 Promise | promiseGet (0) | 2022.05.01 |
자바스크립트[기초] Ajax (0) | 2022.05.01 |
자바스크립트[기초] var | let | const 차이점과 var 를 쓰면 안되는 이유 (0) | 2022.04.25 |