Promise
의 메서드then()
catch()
finally()
promise
에 대하여Promise
의 메서드then()
then()
메서드는Promise
를 리턴하고 두개의 콜백 함수를 인수로 받는다. 하나는Promise
가 성공했을 때, 다른 하나는 실패했을 때를 위한 콜백 함수이다.
< 구문 >
p.then(onFulfilled, onRejected);
p.then(function(value) {
// 이행
}, function(reason) {
// 거부
});
< 예시 >
let 프로미스 = new Promise((성공, 실패) => {
setTimeout(()=> {
성공()
}, 1000)
});
프로미스.then(() => {
console.log('성공이다!')
}) // '성공이다!'
catch()
catch()
메서드는Promise
에서 실패한 사례만 반환하고 처리한다. 호출하는 방식과 동일하게 동작한다.
const promise1 = new Promise((resolve, reject) => {
throw 'Uh-oh!';
});
promise1.catch((error) => {
console.error(error);
});
// expected output:
< 예시 >
let 프로미스 = new Promise((성공, 실패) => {
setTimeout(()=> {
실패()
}, 1000)
});
프로미스.catch(() => {
console.log('실패다...')
}) // '실패다...'
then()
이 실행되면catch()
는 절대 실행되지 않고,catch()
가 실행되면then()
은 절대 실행되지 않는다!
finally()
finally()
메서드는Promise
객체를 반환한다.Promise
가 처리되면 충족되거나 거부되는지의 여부에 관계없이 지정된 콜백함수가 실행된다.Promise
가 성공적으로 수행 되었는지, 거절되었는지에 관계없이Promise
가 처리 된 후에 코드가 무조건 한 번은 실행된다.
promise
에 대하여
promise
를 쓰는이유는 뭘까?
promise
에 대한 오해
비동기적 처리가 가능하게 바꿔주는 절대적인 문법이 아니다!
promise
는 콜백함수 디자인의 대체품일뿐이다!
Promise
는 성공 / 실패 판정기계라고 생각하면 편하다!