Menulis ulang menggunakan async/await
Tulis ulang salah satu contoh di bab ini Promises chaining menggunakan async/await
daripada .then/catch
:
function loadJson(url) {
return fetch(url)
.then(response => {
if (response.status == 200) {
return response.json();
} else {
throw new Error(response.status);
}
});
}
loadJson('no-such-user.json')
.catch(alert); // Error: 404
Catatannya ada di bawah kode:
async function loadJson(url) {
// (1)
let response = await fetch(url); // (2)
if (response.status == 200) {
let json = await response.json(); // (3)
return json;
}
throw new Error(response.status);
}
loadJson("no-such-user.json").catch(alert); // Error: 404 (4)
Catatan:
-
Function
loadJson
menjadiasync
. -
Semua
.then
di dalamnya di ganti denganawait
. -
Kita dapat
return response.json()
daripada menunggu untuk itu, seperti ini:if (response.status == 200) { return response.json(); // (3) }
Lalu kode terluar harus
await
untuk promise tersebut resolve. Dalam kasus kita, itu tidak masalah. -
Error yang dilempar dari
loadJson
ditangani oleh.catch
. Kita tidak bisa menggunakanawait loadJson(???)
di sana, karena kita tidak berada di dalam functionasync
.