vue.js/vue.js 2
69. 기존 비동기패턴 코드에서 async & await 로 바꾼 예
DEV-Front
2022. 8. 10. 23:10
반응형
<template>
<div id="app">
<button @click="loginUser1">Login</button>
<h1>List</h1>
<ul>
<li v-for="(item, idx) in items" v-bind:key="idx">{{item}}</li>
</ul>
</div>
</template>
<script>
import axios from 'axios'
import { handleException } from './utils/handler.js'
export default {
data(){
return{
items:[]
}
},
methods:{
// 1. 기존 코드를
loginUser(){
axios.get('https://jsonplaceholder.typicode.com/users/1')
.then(res => {
if (res.data.id === 1) {
console.log('사용자가 인증 되었습니다');
axios.get('https://jsonplaceholder.typicode.com/todos')
.then(res =>{
this.items = res.data;
})
.catch(err => console.log(err))
}
})
.catch(err => console.log(err));
},
// 2. async & await 로 바꾸면
async loginUser1(){
try {
var res = await axios.get('https://jsonplaceholder.typicode.com/users/1');
if (res.data.id === 1) {
console.log('사용자가 인증 되었습니다');
var list = await axios.get('https://jsonplaceholder.typicode.com/todos');
this.items = list.data;
}
} catch (error) {
handleException(error); // 공통 에러 함수 만들기 (팁)
console.log(error);
}
}
}
}
</script>
<style>
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
</style>
반응형