Promise
는 다음 중 하나의 상태를 가진다.
대기 중인 프로미스는 값과 함께 이행할 수도, 어떤 이유(오류)로 인해 거부될 수도 있다. 이행이나 거부될 때, 프로미스의
then
메서드에 의해 대기열(큐)에 추가된 처리기들이 호출된다. 또한 이행이 거부될때,catch
메서드를 사용한다.
let myFirstPromise = new Promise((resolve, reject) => {
// 우리가 수행한 비동기 작업이 성공한 경우 resolve(...)를 호출하고, 실패한 경우 reject(...)를 호출.
setTimeout( function() {
resolve("성공!");
reject(new Error("Error!"));
}, 250)
})
myFirstPromise.then((successMessage) => {
// successMessage는 위에서 resolve(...) 호출에 제공한 값
console.log("와! " + successMessage) //와! 성공!
}).catch(error => {
console.log(error)
}).finally(() => {
console.log('종료!');
});
finally
메서드: 이행과 거부에 상관없이 마지막 기능을 사용하고 싶을때 사용.
all
race
Promise.all([f1(), f2(), f3()]).then(resolve => {
console.log((resolve));
});
Promise.race([f1(), f2(), f3()]).then(resolve => {
console.log((resolve));
});