Sobes.tech
Middle

Ի՞նչ է async/await ձևով ներկայացված սինտակսիկ շաքարի առավելությունը համեմատած Promise-ի հետ։

sobes.tech AI

Պատասխան AI-ից

Ասինխրոն async/await-ի հիմնական առավելությունը՝ այն է, որ այն հնարավորություն է տալիս գրել ասինխրոնային կոդը ավելի սինխրոն և ընթեռնելի ոճով:

Համեմատություն:

Աспեկտ Promise async/await
Ընթեռնելիություն Կարող է հանգեցնել "պրոմիսների շղթայի". Հնարավոր է գրել կոդը գրեթե ինչպես սինխրոն։
Հետագամշակումը Օգտագործում է .catch(). Օգտագործում է ստանդարտ try...catch.
Հետևողականություն Պահանջում է ուշադիր շղթայակապում կամ Promise.all. Մասնակի և հեշտ ընթեռնելի։
Դետալների հետևում Կարող է ավելի բարդ լինել հետևել հոսքին. մոտ է սինխրոն կոդի դետալներին։
Սինտակսիսային աղմուկ Շատ .then(), .catch(). Փոքր բուիլդերային կոդ։

Օրինակ պրոմիսներով:

// Օրինակ Promise-ով
fetch('user.json')
  .then(response => response.json())
  .then(user => fetch(`https://api.github.com/users/${user.name}`))
  .then(githubUser => githubUser.json())
  .then(githubUser => {
    // Տվյալների մշակումը
    console.log(githubUser);
  })
  .catch(error => {
    console.error('Սխալ:', error);
  });

Օրինակ async/await-ով:

// Օրինակ 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();

    // Տվյալների մշակումը
    console.log(githubUser);
  } catch (error) {
    console.error('Սխալ:', error);
  }
}

getUserData();

Այսպիսով, async/await չի փոխարինում պրոմիսներին, այլ հանդիսանում է սինտակսիսային շակար պրոմիսների վրա, դարձնելով ասինխրոնային օպերացիաները ավելի ինտուիտիվ և հեշտ պահպանվող։