Promise

태권·2022년 8월 22일
0

개념알기

목록 보기
17/26

내용은 드림코딩 유튜브를 공부하고 정리했다.
비동기를 간편하게 처리할 수있도록 도와주는 객체이다

promise 를 만들고
then을 쓰면 resolve일때 값을
catch를 쓰면 reject일때의 값을 가져온다.
또 finally를 쓰면 둘 상관없이 값을 가져온다.

두번째 예시
then에서 받아오는값이 하나이면 생략하고 작성할수 있다.

.then(getEgg).then(cook).then(cosole.log):

catch를 써서 값을 불러오지 못했을때 다른값을 넣어줄수도 있다
만약 getEgg에서 값을 못가져왔을때

.then(getEgg)
.catch(error => {return 'o'})
.then(cook)
.then(console.log)


위의 콜벡헬을 promise를 이용해서 변경해보자

class UserStorage{
loginUser(id,password){
	return new Promise((resolve,reject)=>{
     setTimeout(()=>{
     if(
     	(id ==='aaa' && password === 'abc')||
        (id ==='bbb' && password ==='bcd'))
     {resolve(id)}
     else {
     	reject(new Error('Not Access'))
     }
     },2000);
    }
}
getRoles(user){
return new Promise((resolve,reject)=>{
setTimeout(()=>{
if(user === 'aaa'){resolve({name:'aaa',role:'admin'})}
else{reject(new Error('no access'))}
},1000)}
})}
}

const userStorage = new UserStorage();
const id = prompt('id')
const password = prompt('password')
userStorage
	.loginUser(id,password)
    .then(user=>userStorage.getRoles(user))
    .then(user=> alert(`hello${user.name},${user.role}`))
    .catch(console.log);
profile
2022.08 개발자 시작

0개의 댓글