Sobes.tech
Middle

Ինչու է ներդրվել async/await կառուցվածքը և ինչպես է այն բարելավում ասինխրոնային կոդի աշխատանքը?

sobes.tech AI

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

Async/await-ը ներդրվել է՝ պարզեցնելու ասինխրոնային կոդի գրառումը, այն դարձնելով ավելի ընթերցանելի և պահպանելի՝ համեմատած ավանդական callback-ների կամ promises-ի հետ:

Ինչպես է բարելավում:

  1. Ընթերցանելիություն: async/await-ով գրված կոդը տեսք ունի որպես սինխրոն, տող առ տող, ինչը զգալիորեն հեշտացնում է նրա հասկանալը:
  2. Խափանումների կառավարում: Հնարավոր է օգտագործել ստանդարտ կառուցվածքներ՝ ինչպիսիք են try/catch՝ սխալների կառավարում համար, տարբեր այն .catch() promises-ների դեպքում:
  3. Դեբագ: Դադարակետերը (breakpoints) աշխատում են նույն կերպ, ինչպես սինխրոն կոդում, ինչը հեշտացնում է դեբագը:
  4. Ավելի քիչ "callback hell": Հեռացնում է ներսի callback-ների խնդիրը, որը հանգեցնում է անընթեռնելի կոդի:

Օրինակ՝

Promises-ով կոդ:

// Օրինակ promises-ով
fetch('https://api.example.com/data')
  .then(response => response.json())
  .then(data => {
    console.log(data);
  })
  .catch(error => {
    console.error('Տվյալների ստացման սխալ:', error);
  });

Նույն կոդը async/await-ով:

// Օրինակ async/await-ով
async function fetchData() {
  try {
    const response = await fetch('https://api.example.com/data');
    const data = await response.json();
    console.log(data);
  } catch (error) {
    console.error('Տվյալների ստացման սխալ:', error);
  }
}

fetchData();

async/await կառուցվածքը հիմնված է promises-ների վրա և հանդիսանում է սինտաքսիկ շաքար՝ աշխատելու նրանց հետ: async նշանագրված ֆունկցիան միշտ վերադարձնում է promises: await օպերատորը կարող է օգտագործվել միայն async ֆունկցիաների ներսում և "կապում" սպասում է promises-ի լուծմանը՝ վերադարձնելով նրա լուծված արժեքը կամ գեներացնելով արտահայտություն սխալի դեպքում։