Sobes.tech
Middle

Kokia yra sintaksinio cukraus, pateikto async/await formoje, pranašumas lyginant su Promise?

sobes.tech AI

Atsakymas iš AI

Pagrindinis async/await pranašumas prieš "grynus" pažadus yra galimybė rašyti asinchroninį kodą labiau sinchroniniu ir skaitomu stiliumi.

Palyginimas:

Aspektas Promise async/await
Skaitymas Gali sukelti "Promise grandines". Leidžia rašyti kodą beveik kaip sinchroninį.
Klaidos apdorojimas Naudoja .catch(). Naudoja standartinį try...catch.
Sekos aiškumas Reikalauja atidžiai sujungti arba Promise.all. Aiškus ir lengvai skaitomas.
Derinimas Gali būti sudėtingiau sekti srautą. Artimas sinchroninio kodo derinimui.
Sintaksės triukšmas Daug .then(), .catch(). Mažiau boilerplate kodo.

Pavyzdys su pažadais:

// Pavyzdys su Promise
fetch('user.json')
  .then(response => response.json())
  .then(user => fetch(`https://api.github.com/users/${user.name}`))
  .then(githubUser => githubUser.json())
  .then(githubUser => {
    // Duomenų apdorojimas
    console.log(githubUser);
  })
  .catch(error => {
    console.error('Klaida:', error);
  });

Pavyzdys su async/await:

// Pavyzdys su 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();

    // Duomenų apdorojimas
    console.log(githubUser);
  } catch (error) {
    console.error('Klaida:', error);
  }
}

getUserData();

Taigi, async/await nepakeičia pažadų, o yra jų sintaksinis cukrus, darantis asinchronines operacijas labiau intuityvias ir lengviau palaikomas.