오늘은 콜백함수와 콜백함수에서의 this 바인드
그리고 동기와 비동기에대해서 강의를 들었고 비동기 처리를 하는 방법에 대해서도 배웠는데
후아 개념에 대해서는 어려웠지만 여러번 보면서 이해를 해나갔는데
이 개념을 코드에 적용시키는 건 또 다른 문제가 되었다
4주차 강의에 숙제가 있었는데
주어진 코드에서
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");
.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();
async/await로 코드를 리팩토링 하는게 과제였는데
class HttpError extends Error {
constructor(response) {
super(`${response.status} for ${response.url}`);
this.name = "HttpError";
this.response = response;
}
}
async function loadJson(url) {
let response = await fetch(url);
{
if (response.status == 200) {
return response.json();
} else {
throw new HttpError(response);
}
}
}
async function narutoIsNotOtaku() {
let title = prompt("애니메이션 제목을 입력하세요.", "naruto");
return await loadJson(
)
.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();
강의에서 배운대로 비동기 처리를 수행하고자하는 함수 앞에 async를 선언해주고
함수 내부에서 비동기 처리를 해야하는 부분마다 await를 붙여주면서 하려했는데
첫번째 loadJson(url) 함수는 잘 처리한 것 같은데
두번째 narutoIsNotOtaku()함수는 함수내에서 비동기 처리를 해야하는 부분을 어떻게 고쳐야할지 감이 안와서 큰일이였다
혼자 이리저리 고민해보다가 답이 안나와서 그만 금단의 정답을 열어보고 말았는데
while문과 try catch 문을 사용해서 하는것이 풀이였다는걸 보고 여전히 내 문법실력은 보잘것 없다고 느끼며
더욱 열심히 공부해야겠다고 느끼게되었고 콜백함수의 this 바인딩 부분은 아직 너무 부족한 것 같아서
다시 또 직접 코드 짜보면서 공부해야겠다고 느끼게되었다.
코딩테스트도 준비해야하는데 벌써부터 이렇게 막히면 어떻게하나 고민이 많아지는 하루였고
4개월 뒤에는 반드시 발전해있는 내가 되도록 더욱 노력해야겠다고 느끼는 하루였다...
'내일배움캠프 TIL' 카테고리의 다른 글
| 내일 배움 캠프 23_06_13 TIL (0) | 2023.06.13 |
|---|---|
| 내일 배움 캠프 23_05_25 TIL (0) | 2023.05.25 |
| 내일 배움 캠프 23_05_23 TIL (0) | 2023.05.23 |
| 내일 배움 캠프 23_05_22 TIL (0) | 2023.05.22 |
| 내일 배움 캠프 23_05_19 TIL (0) | 2023.05.19 |