async 和 await 是 JavaScript 中用於處理異步操作的關鍵字。它們是為了讓異步程式碼的撰寫和讀取更加直觀和易於理解。
async 用於聲明一個函數是異步函數,它內部可以包含 await 關鍵字來等待一個 Promise 物件的狀態變為Fulfilled。當函式內部使用 await 等待一個 Promise 時,它會暫停函式的執行,直到該 Promise 的狀態變為fulfilled或reject。在等待期間,JavaScript 可以繼續執行其他任務。
下面是一個簡單的範例:
async function fetchProduct() {
const fetchPromise = await fetch("https://mdn.github.io/learning-area/javascript/apis/fetching-data/can-store/products.json"
);
const data = await fetchPromise.json(); //把等待完的資料存到data裡
console.log(data);
}
fetchProduct();
在這個例子中,fetchProduct 函數被聲明為異步函數,並使用 await 等待 fetch 函數返回的 Promise 物件解析。然後,使用 await 等待 response.json() 的 Promise 解析,將回應轉換為 JSON 格式的資料。最後,將資料print出來
我們也可以加try 跟 catch來處理錯誤:
async function fetchProduct() {
try {
const fetchPromise = await fetch(
"https://mdn.github.io/learning-area/javascript/apis/fetching-data/can-store/products.json"
);
const data = await fetchPromise.json();
console.log(data);
} catch (error) {
console.log(error);
}
}
使用 async 和 await 可以讓異步程式碼看起來更像是同步的程式碼,讓開發者可以使用更簡潔和直觀的語法來處理異步操作。