Sobes.tech
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.