PÅepiÅ¡te za použità async/await
PÅepiÅ¡te tento pÅÃklad kódu z kapitoly ZÅetÄzenà pÅÃslibů za použità async/await namÃsto .then/catch:
function naÄtiJson(url) {
return fetch(url)
.then(odpovÄÄ => {
if (odpovÄÄ.status == 200) {
return odpovÄÄ.json();
} else {
throw new Error(odpovÄÄ.status);
}
});
}
naÄtiJson('https://javascript.info/takovy-uzivatel-neni.json')
.catch(alert); // Chyba: 404
Poznámky jsou pod kódem:
async function naÄtiJson(url) { // (1)
let odpovÄÄ = await fetch(url); // (2)
if (odpovÄÄ.status == 200) {
let json = await odpovÄÄ.json(); // (3)
return json;
}
throw new Error(odpovÄÄ.status);
}
naÄtiJson('https://javascript.info/takovy-uzivatel-neni.json')
.catch(alert); // Chyba: 404 (4)
Poznámky:
-
Funkce
naÄtiJsonse stává asynchronnà (async). -
Všechna
.thenuvnitÅ jsou nahrazena zaawait. -
Můžeme vrátit
return odpovÄÄ.json()mÃsto Äekánà na tuto funkci, napÅÃklad:if (odpovÄÄ.status == 200) { return odpovÄÄ.json(); // (3) }Pak by vnÄjšà kód musel poÄkat pomocÃ
await, než se tento pÅÃslib vyhodnotÃ. V naÅ¡em pÅÃpadÄ na tom nezáležÃ. -
Chyba vyvolaná z
naÄtiJsonje oÅ¡etÅena pomocÃ.catch. Nemůžeme zde použÃtawait naÄtiJson(â¦), protože nejsme uvnitÅ funkce sasync.