Middle
Care este avantajul zahărului sintactic prezentat sub forma de async/await comparativ cu Promise?
sobes.tech AI
Răspuns de la AI
Principalul avantaj al async/await față de promisiunile "curate" este posibilitatea de a scrie cod asincron într-un stil mai sincron și mai ușor de citit.
Comparatie:
| Aspect | Promise |
async/await |
|---|---|---|
| Lizibilitate | Poate duce la "lanțuri de promisiuni". | Permite scrierea codului aproape ca sincron. |
| Tratarea erorilor | Folosește .catch(). |
Folosește try...catch standard. |
| Secvențialitate | Necesită o concatenare atentă sau Promise.all. |
Clar și ușor de citit. |
| Debugging | Poate fi mai dificil de urmărit. | Apropiat de debugging-ul codului sincron. |
| Zgomot sintactic | Multe .then(), .catch(). |
Mai puțin boilerplate. |
Exemplu cu promisiuni:
// Exemplu cu Promise
fetch('user.json')
.then(response => response.json())
.then(user => fetch(`https://api.github.com/users/${user.name}`))
.then(githubUser => githubUser.json())
.then(githubUser => {
// Procesare date
console.log(githubUser);
})
.catch(error => {
console.error('Eroare:', error);
});
Exemplu cu async/await:
// Exemplu cu async/await
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();
// Procesare date
console.log(githubUser);
} catch (error) {
console.error('Eroare:', error);
}
}
getUserData();
Prin urmare, async/await nu înlocuiește promisiunile, ci este un zahăr sintactic peste ele, făcând operațiile asincrone mai intuitive și mai ușor de întreținut.