Promise - state
1. Promise의 3가지 상태
- promise 객체는 ‘상태'를 가지고 있습니다.
- Pending(대기) : 비동기 처리 로직이 완료되지 않은 상태
- FulFilled(이행) : 비동기 처리가 완료되어 프로미스가 결과 값을 반환해준 상태
- Rejected(실패) : 비동기 처리가 실패하거나 오류가 발생한 상태
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
console.log('before', promise)
resolve(1);
console.log('after', promise);
}, 1000);
});
promise.then(function(data) {
console.log(data);
});
- promise객체를 console.log()로 불러오면 상태 값이 나옵니다.

Promise - 에러 처리
1. 에러 처리 - reject
- then의 2번째 인자가 reject이니까 그렇게 해도 됩니다. 하지만...
- .catch으로 받으면 가독성이 더 좋으니까 그렇게 써 봐요.
promise
.then(function() {})
.catch(function(err) {console.log(err);});
job()
.then(function() {
console.log(1);
})
.then(function() {
console.log(2);
})
.then(function() {
console.log(3);
})
.catch(function() {
console.log(4);
})
.then(function() {
console.log(5);
});
Promise - 마무리
1. 기타
- promise.finally()
- es6는 Can I Use에서 봤을때 ie는 지원하지 않습니다.
2. promise.all()
- 여러 프로미스를 모두 성공시킨 후 완료 로직을 실행하고 싶은 경우
Promise.all([
new Promise(resolve => setTimeout(() => resolve(1), 9000)), // 1
new Promise(resolve => setTimeout(() => resolve(2), 2000)), // 2
new Promise(resolve => setTimeout(() => resolve(3), 1000)) // 3
]).then(function(value) {
console.log(value);
});
Comments