Switch asynchronous callback(비동기 콜백) to Promise Example
'use strict';
class UserInfor{
UserInfor(id, passWord){
return new Promise((resolve, reject) => {
setTimeout(() => {
if(
(id === 'Alex' && passWord === '1234') ||
(id === 'Jhon' && passWord === '5678') ||
(id === 'Mical' && passWord === '123')
){
resolve(id);
}
else if((id !== 'Alex') && (id !== 'Jhon') && (id !== 'Mical')) {
reject(new Error(`id ${id} doesn't exist`));
}
else{
reject(new Error(`Password is wrong`));
}
}, 1000)
})
}
getInfor(user) {
return new Promise((resolve, reject) => {
setTimeout(() => {
if(user === 'Alex' || user === 'Jhon' || user === 'Mical'){
if(user === 'Alex') resolve({ name : 'Alex', job : 'Programmer' });
else if(user === 'Jhon') resolve({ name : 'Jhon', job : 'Builder' });
else if(user === 'Mical') resolve({ name : 'Mical', job : 'Writer' });
}
else{
reject(new Error(`Error ${user}`));
}
}, 2500);
})
}
}
const userInput = new UserInfor(); // userInput Class선언
const id = prompt('Enter your ID'); // id 입력
const passWord = prompt('Enter your Password'); // 비밀번호 입력
userInput.UserInfor(id, passWord)
.then(id => userInput.getInfor(id))
.then(userInfo => console.log(`name : ${userInfo.name}, password : ${userInfo.role}`))
.catch(error => console.log(error))
.finally(() => console.log('Finish'));
Promise를 리턴할때 'new'를 붙이지 않으면 에러 발생
getInfor(user) {
return Promise((resolve, reject) => {
setTimeout(() => {
if(user === 'Alex' || user === 'Jhon' || user === 'Mical'){
if(user === 'Alex') resolve({ name : 'Alex', job : 'Programmer' });
else if(user === 'Jhon') resolve({ name : 'Jhon', job : 'Builder' });
else if(user === 'Mical') resolve({ name : 'Mical', job : 'Writer' });
}
else{
reject(new Error(`Error ${user}`));
}
}, 2500);
})
}
위 코드는 'getInfor()'메소드에서 Promise를 리턴할때 new를 주지 않은 상태이다 이제 결과를 확인해보자
예상대로 에러가 나왔다. 설사 id, password를 제대로 입력해도 'new'를 Promise앞에 붙여주지 않았기 때문에 undefined가 됬다.
위 코드의 콜백함수 코드는 'Build asynchronous callback(비동기 콜백) Example'글 참고
댓글
댓글 쓰기