Promise

콜백지옥을 해결? 도움을 주는? 프로미스

resolve : 함수 안의 처리가 끝났을 때 호출하는 콜백함수, resolve함수에는 어떠한 값도 인수로 넘길수 있으며 다음 처리를 실행하는 함수에 전달

reject : 함수 안의 처리가 실패했을 경우 호출해야하는 콜백함수, reject함수에는 어떠한 값도 인수로 넘길수 있음

1) promise예제

1
2
3
4
5
6
7
8
9
10
11
12
const promise1 = new Promise((resolve , reject) => {

setTimeout(()=>{
console.log("first");
resolve();
}, 1000);

});

promise1.then(()=>{
console.log("second");
});

2) resolve 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
const promist2 = new Promise((resolve, reject)=>{

setTimeout(()=>{
let name = prompt("put name");
resolve(name);

}, 1000);
;
})

promist2.then((name) => {
console.log("name is " + name);
});

then

promise.then(onFullfilled);

onFullfilled -> 성공 콜백 함수 promise안의 로직이 정상적으로 끝났을 때 호출

3) reject

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
const promise3= new Promise((resolve, reject) => {

setTimeout(() => {
let n = parseInt(prompt("pun number under 10"));
if(n < 10){
resolve(n);
}else{
reject(`err : ${n} is over 10`);
}
}, 1000);
});

promise3.then((num)=>{
console.log("your num : " + num + " is under 10 ");
}
).catch((err) =>{
console.error(err);
});

catch

promise.catch(onRejeted);

reject함수는 promise를 종료시킨다. reject함수가 실행되면! 당연히 then메서드에 넘긴 함수는 실행되지 않고 catch메서드가 실행

onRejected 함수는 실패 콜백함수라고 하며 promise안의 처리가 실패로 끝났을 때 호출되는 함수, 인수로 error을 받음