const fakeRequest = (url) => {
/*
Promise는 new 키워드를 통해서 Promise 객체를 생성한다.
? 응답에 성공했을 때 처리하는 resolve 함수와
? 응답에 실패했을 때 처리하는 reject 함수
! 두 가지 콜백함수를 인자로 갖는다
정상적으로 처리되었다면 resolve 함수를 호출하게 되는데 이는 .then 메서드를 통해서 접근할 수 있다.
에러가 발생했을 경우에는 reject 함수를 호출하게 되는데 이는 .catch 메서드를 통해 접근할 수 있다.
정상처리 여부와 관계 없이 처리하는 것은 .finally를 통해 접근 가능하다.
Promise chaining => .then, .catch, .finally 메서드는 Promise를 반환하기 때문에
체이닝이 가능해 .then으로 연결이 가능하다. 마지막에 .catch로 에러 한번에 처리
*/
return new Promise((resolve, reject) => {
const rard = Math.random();
setTimeout(() => {
rard < 0.7 ? resolve('Your fake data here!') : reject('request error');
}, 1000);
});
};
fakeRequest('/dogs/1')
.then((data) => {
console.log('DONE WITH REQUEST!');
console.log(`data is, ${data}`);
})
.catch((e) => {
console.log(`OH NO!, ${e}`);
});