new Promise(function(resolve, reject) { ... } );
작업이 성공하면 resolve함수를 호출하여 resolve의 인자값을 then으로 받게 되고
작업에 실패하면 reject 함수를 호출하여 reject의 인자값을 catch로 받게 된다.
성공, 실패 어떤일이든 finally로 받아서 처리할 수도 있다.
new Promise(function (resolve, reject) {
}).then(function (resolve) {
//resolve 값 처리
}).catch(function (reject) {
//reject 값 처리
}).finally(function(){
//항상 처리
});
function addTenValue(x, callBack) {
setTimeout(function () {
return callBack(x + 10);
}, 1000);
}
//이를 계속 더하고자 할때 promise를 사용하지 않으면 이렇게 된다. 가독성 떨어짐 ㅠ
addTenValue(10, function (x1) {
addTenValue(x1, function (x2) {
addTenValue(x2, function (x3) {
console.log(x3);
})
})
});
하지만 Promise를 이용하면 쉽게 해결된다!
function addTenValue(x) {
return (new Promise(function (resolve) {
setTimeout(function () {
resolve(x + 10);
}, 1000)
}));
}
addTenValue(10).then(function (result) {
return addTenValue(result);
}).then(function (result) {
return addTenValue(result);
}).then(function (result) {
console.log(result);
});