Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 실시간알림
- SSE
- 열공하자
- frontend
- 파티셔닝
- mariadb
- partitioning
- ServerSentEvent
- node.js
- Partition
- localStorage
- node.js란
- Node.js기본
- EventSource
- PostgreSQL
- Lag
- 성장기
- 개발자
Archives
- Today
- Total
써치킴의 우당탕탕 개발 블로그
[Vue.js][Ch4][영화검색 사이트] 비동기 - API 비동기 처리 연습 본문
1. 구글에 axios cdn 검색 > https://cdnjs.com/libraries/axios 이동 > 스크립트 태그 복사
<script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.26.1/axios.min.js" integrity="sha512-bPh3uwgU5qEMipS/VOmRqynnMXGGSRv+72H/N260MQeXZIK4PG48401Bsby9Nq5P5fz7hy5UGNmC/W1Z51h2GQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
2. index.html에 붙여넣기
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.26.1/axios.min.js" integrity="sha512-bPh3uwgU5qEMipS/VOmRqynnMXGGSRv+72H/N260MQeXZIK4PG48401Bsby9Nq5P5fz7hy5UGNmC/W1Z51h2GQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="./main.js" ></script>
</head>
<body>
</body>
</html>
3. main.js에서 영화정보를 가져오는 코드 구현
function fetchMovies(title) {
const OMDB_API_KEU = '7035c60c';
return new Promise(async (resolve, reject) => {
/* await 키워드를 붙여서 요청에 대한 응답을 기다림
* => await를 사용하는 함수에 async를 붙여줘야함
* => callback 함수에서 사용하고 있으므로 callback 함수 앞에 async를 붙여줌
*/
const res = await axios.get(`https://omdbapi.com?apikey=${OMDB_API_KEU}&s=${title}`);
resolve(res); // 응답받은 데이터를 resolve로 반환
});
}
async function test() {
// async, await를 사용하지 않으면 res에 promise를 반환하는데
// async, await를 사용하여 promise를 기다리게하고
// 영화정보를 갖고있는 데이터가 출력됨
const res = await fetchMovies('frozen');
}
test();
- await를 사용하는 함수는 async를 붙여줘야한다.
유효하지 않은 OMDB KEY를 사용하면 401 에러가 발생한다.
try catch문을 사용한다.
function fetchMovies(title) {
/* 대기(pending): 이행하지도, 거부하지도 않은 초기 상태. */
const OMDB_API_KEU = '7035c60c123';
return new Promise(async (resolve, reject) => {
/* await 키워드를 붙여서 요청에 대한 응답을 기다림
* => await를 사용하는 함수에 async를 붙여줘야함
* => callback 함수에서 사용하고 있으므로 callback 함수 앞에 async를 붙여줌
*/
try {
const res = await axios.get(`https://omdbapi.com?apikey=${OMDB_API_KEU}&s=${title}`);
/* 이행(fulfilled): 연산이 성공적으로 완료됨. */
resolve(res); // 응답받은 데이터를 resolve로 반환
} catch (error) {
console.log('error', error.message);
/* 거부(rejected): 연산이 실패함. */
reject('SEARCHKIM??'); // 메시지 반환
}
});
}
async function test() {
try {
// async, await를 사용하지 않으면 res에 promise를 반환하는데
// async, await를 사용하여 promise를 기다리게하고
// 영화정보를 갖고있는 데이터가 출력됨
const res = await fetchMovies('frozen');
console.log(res);
} catch (error) {
console.log(error);
}
}
function hello() {
fetchMovies('jobs')
.then(res => console.log(res))
.catch(msg => console.log(msg))
}
test();
hello();
- 대기(pending): 이행하지도, 거부하지도 않은 초기 상태.
- 함수가 실행되기 전 부분
- 이행(fulfilled): 연산이 성공적으로 완료됨.
- resolve 파라미터가 실행되는 부분
- 거부(rejected): 연산이 실패함.
- reject 파라미터가 실행되는 부분
'완벽하게 Vue.js' 카테고리의 다른 글
[Vue.js][Ch4][영화검색 사이트] 영화 아이템 - 기본 출력 (0) | 2022.04.25 |
---|---|
[Vue.js][Ch4][영화검색 사이트] 영화 검색 코드 리팩토링 (0) | 2022.04.25 |
[Vue.js][Ch4][영화검색 사이트] 비동기 - 예외처리(then, catch, finally) (0) | 2022.04.25 |
[Vue.js][Ch4][영화검색 사이트] 비동기 - 콜백과 프로미스 객체의 이해 (0) | 2022.04.23 |
[Vue.js][Ch4][영화검색 사이트] 영화 목록에서 ID 중복 제거 (0) | 2022.04.23 |
Comments