Rewrite using async/await
Rewrite this example code from the chapter Concatenamento di promise (promise chaining) using async/await
instead of .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
Le note sono sotto il codice:
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)
Note:
-
La funzione
loadJson
diventaasync
. -
Tutti i
.then
interni sono sostituiti conawait
. -
Possiamo ritornare
response.json()
invece di aspettarlo (awaiting for it), come qui:if (response.status == 200) { return response.json(); // (3) }
Poi il codice esterno avrebbe dovuto attendere (
await)
che la promise risolvesse. Nel nostro caso non è importante. -
L’errore sollevato da
loadJson
è gestito da.catch
. Non possiamo usareawait loadJson(…)
qui, perchè non siamo in una funzioneasync
.