Перепишіть, використовуючи async/await
Перепишіть цей приклад коду з розділу Ланцюжок промісів, використовуючи async/await
замість .then/catch
:
function loadJson(url) {
return fetch(url)
.then(response => {
if (response.status == 200) {
return response.json();
} else {
throw new Error(response.status);
}
});
}
loadJson('https://javascript.info/no-such-user.json')
.catch(alert); // Error: 404
Примітки наведено під кодом:
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('https://javascript.info/no-such-user.json')
.catch(alert); // Error: 404 (4)
Примітки:
-
Функція
loadJson
стаєasync
-функцією. -
Усі
.then
всередині замінюються наawait
. -
Ми можемо зробити
return response.json()
замість того, щоб чекати його, наприклад:if (response.status == 200) { return response.json(); // (3) }
Тоді зовнішній код повинен був би чекати
await
, поки цей проміс буде виконано. У нашому випадку це не має значення. -
Помилка, викликана
loadJson
, обробляється.catch
. Ми не можемо використовувати тамawait loadJson(…)
, тому що ми не використовуємоasync
-функцію.