Middle
Mis on süntaktilise suhkru eelis, mis on esitatud vormis async/await võrreldes Promise'iga?
sobes.tech AI
Vastus AI-lt
Async/await peamine eelis võrreldes "puhtamate" lubadustega on võimalus kirjutada asünkroonne kood rohkem sünkroonilises ja loetavas stiilis.
Võrdlus:
| Aspekt | Promise |
async/await |
|---|---|---|
| Loetavus | Võib põhjustada "lubaduste ahelad". | Annab võimaluse kirjutada koodi peaaegu nagu sünkrooniline. |
| Vea töötlemine | Kasutab .catch(). |
Kasutab standardset try...catch. |
| Järjepidevus | Nõuab hoolikat ahelat või Promise.all. |
Selge ja kergesti loetav. |
| Silumine | Võib olla keerulisem jälgida voogu. | Lähedal sünkroonilise koodi silumisele. |
| Sünteksi müra | Palju .then(), .catch(). |
Vähem boilerplate koodi. |
Näide lubadustega:
// Näide lubadusega
fetch('user.json')
.then(response => response.json())
.then(user => fetch(`https://api.github.com/users/${user.name}`))
.then(githubUser => githubUser.json())
.then(githubUser => {
// Andmete töötlemine
console.log(githubUser);
})
.catch(error => {
console.error('Viga:', error);
});
Näide async/await-iga:
// Näide async/await-iga
async function getUserData() {
try {
const userResponse = await fetch('user.json');
const user = await userResponse.json();
const githubResponse = await fetch(`https://api.github.com/users/${user.name}`);
const githubUser = await githubResponse.json();
// Andmete töötlemine
console.log(githubUser);
} catch (error) {
console.error('Viga:', error);
}
}
getUserData();
Seega, async/await ei asenda lubadusi, vaid on nende sünteksisuhkur, mis muudab asünkroonilised toimingud intuitiivsemaks ja lihtsamini hooldatavaks.