강의 자료 모음집 : https://www.notion.so/teamsparta/efca6302f6e84fef9cac2dbe270d98c6
JS명령어는 보통 MDN 이 잘 되어있다.
(한국어 지원)
부교재 영상 - https://teamsparta.notion.site/1e13acaf1bff4a158238965c31a5d85f
class HttpError extends Error {
constructor(response) {
super(`${response.status} for ${response.url}`);
this.name = 'HttpError';
this.response = response;
}
}
function loadJson(url) {
return fetch(url)
.then(response => {
if (response.status == 200) {
return response.json();
} else {
throw new HttpError(response);
}
})
}
function narutoIsNotOtaku() {
let title = prompt("애니메이션 제목을 입력하세요.", "naruto");
return loadJson(`https://animechan.vercel.app/api/random/anime?title=${title}`)
.then(res => {
alert(`${res.character}: ${res.quote}.`);
return res;
})
.catch(err => {
if (err instanceof HttpError && err.response.status == 404) {
alert("일치하는 애니메이션이 없습니다. 일반인이시면 naruto, onepiece 정도나 입력해주세요!");
return narutoIsNotOtaku();
} else {
throw err;
}
});
}
narutoIsNotOtaku();
function loadJson(url) {
return new Promise(function (resolve) {
...
})
}
var narutoIsNotOtaku = async function () {
let title = prompt("애니메이션 제목을 입력하세요.", "naruto");
...
}
narutoIsNotOtaku(); // Promise {<fulfilled>: undefined} 가 뜬다 onepiece는 먹지 않고 반응도 뜨지 않는다
Promise
와 async
를 넣어 리팩토링 했다
문제점
1. 네이버에선 뜨고 구글에선 에러 (CROS 문제라고함)
2. 입력 되고 200ok도 반환하는데 새로운 메시지가 alert
되지 않음
3. 본인이 이해를 잘 못함