การใช้ async
และ await
ใน Vue.js ช่วยให้คุณสามารถจัดการการร้องขอ HTTP, การดำเนินการที่ใช้เวลานาน, หรือการทำงานกับข้อมูลที่มีการเรียกข้อมูลโดยอาศัยการร้องขอไม่สามารถทำได้ทันทีได้อย่างรวดเร็วและแบบไม่บล็อก UI ในแอป Vue.js ของคุณ.
นี่คือตัวอย่างการใช้ async
และ await
ใน Vue.js:
สร้างฟังก์ชัน
async
ใน Methods: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
32
33
34
35
36<template>
<div>
<button @click="fetchData">Fetch Data</button>
<div v-if="isLoading">Loading...</div>
<div v-else>
<ul>
<li v-for="item in items" :key="item.id">{{ item.name }}</li>
</ul>
</div>
</div>
</template>
<script>
export default {
data() {
return {
items: [],
isLoading: false,
};
},
methods: {
async fetchData() {
this.isLoading = true;
try {
const response = await this.$axios.get('/api/data'); // ตัวอย่างการใช้ Axios สำหรับการร้องขอ HTTP
this.items = response.data;
} catch (error) {
console.error('Error fetching data:', error);
} finally {
this.isLoading = false;
}
},
},
};
</script>ใช้
await
เพื่อรอการเรียก API:ในตัวอย่างนี้เราใช้
await
เมื่อเรียกthis.$axios.get('/api/data')
เพื่อรอให้การร้องขอ HTTP เสร็จสิ้นก่อนที่จะดำเนินการต่อไป.จัดการข้อมูลหลังจากการร้องขอ HTTP สำเร็จ:
เมื่อการร้องขอ HTTP เสร็จสิ้นและไม่มีข้อผิดพลาด, เรากำหนดค่า
this.items
ในข้อมูลที่ได้รับจากการร้องขอ HTTP และปิดตัวแสดงข้อความ “Loading…”. หากมีข้อผิดพลาดในการร้องขอ, เราจะแสดงข้อผิดพลาดในคอนโซล.จัดการข้อมูลหลังจากการร้องขอ HTTP ล้มเหลว:
ในบล็อก
catch
, เราจัดการกับข้อผิดพลาดที่เกิดขึ้นในการร้องขอ HTTP และแสดงข้อผิดพลาดในคอนโซล. หลังจากนั้นเราปิดตัวแสดงข้อความ “Loading…” ในบล็อกfinally
เพื่อให้แน่ใจว่าเมื่อการร้องขอ HTTP เสร็จสิ้น (ไม่ว่าจะสำเร็จหรือล้มเหลว) เราก็จะปิดตัวแสดงข้อความโหลด.
คุณสามารถใช้ async
และ await
เพื่อจัดการกับการร้องขอ HTTP และข้อมูลใน Vue.js อย่างมีประสิทธิภาพและง่ายต่อการอ่านและบริหาร.