반응형
비동기의 동기처리와 프로미스
프로미스를 통해 비동기메서드는 동기메서드처럼 값을 반환 할 수 있게 된다.
프로미스 생성
프로미스가 이행되거나 거부될때(fulfilled, rejected), 이벤트 큐에 처리된 처리기들이 호출된다.
프로미스는 아래와 같이 객체 형태로 생성할 수 있다.
const promise=new Promise();
프로미스의 상태와 조작
Promise의 인자들을 통해 Promise의 상태를 바꿀 수 있다.
프로미스는 pending, fulfilled, rejected의 세가지 상태를 가진다.
일단 프로미스가 호출되면 프로미스는 Pending상태이다.
new Promise의 인자로 resolve와 reject가 있는데, 이 두 함수를 통해 resolve를 실행하면 fulfilled가 되고, reject를 실행하면 rejected상태가 된다.
resolve가 실행되는 경우 외부에서 .then을 통해 값을 받아낼 수 있고, reject가 실행되는 경우에는 .catch를 통해 값을 받아줄 수 있다.
const myPromise=new Promise((resolve, reject)=>{
if(비동기성공)
resolve("value");
else
reject("실패함");
}
myPromise.then((res)=>{
console.log(res)
}).catch((err)=>{
console.log(err);
});
async와 await
async와 await은 then과 catch를 대신해서, return된 값을 처리할 수 있게 해준다.
await을 함수 앞에 붙이게 되면 해당 프로미스가 처리될 때까지 다음 함수를 수행하지 않는다.
이걸 써서 가장 좋은 것은 return된 값을 변수로써 이후에 쓸 수 있다는 점이다.
function myPromise(){
return new Promise((resolve)=>{
resolve("성공함요");
});
}
aysnc function Func(){
const value=await myPromise();
console.log(value);
}
주의할 점은 await은 async function 안에서만 사용할 수 있다는 것이다.
또한 async function은 promise를 반환한다는 점을 기억해야한다.
반응형