Sobes.tech
Middle

Խոսիր ինձ մասին JavaScript-ում ասինխրոնության սկզբունքների մասին։

sobes.tech AI

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

JavaScript- ում անսինխրոնության սկզբունքները հիմնված են մեկ թելային կատարման մոդելին, որտեղ այն առաջադրանքները, որոնք կարող են տևել երկար ժամանակ (օրինակ՝ ցանցային հարցումներ, ժամացույցներ), չեն խափանում հիմնական կատարման թելը, ինչը թույլ է տալիս կատարել այլ գործողություններ: Դա հասնում է հետևյալով.

  • Event Loop (Իրադարձությունների ցիկլ): մեխանիզմ, որը մշտապես ստուգում է հաղորդագրությունների հերթը և կատարում է նրանից առաջադրանքները: Երբ անսինխրոնային օպերացիան ավարտվում է, նրա callback-ը դրվում է առաջադրանքների հերթում:
  • Callback Functions (Հետադարձ կանչման ֆունկցիաներ): ֆունկցիաներ, որոնք փոխանցվում են որպես արգումենտ այլ ֆունկցիայի և կատարվում են անսինխրոնային օպերացիայի ավարտից հետո:
  • Promises (Համոզմունքներ): օբյեկտներ, որոնք ներկայացնում են անսինխրոնային օպերացիայի վերջնական արժեքը, որը կարող է լինել կամ հաջողությամբ կատարված (resolved), կամ մերժված (rejected): Դրանք հեշտացնում են անսինխրոնային կոդի աշխատանքը, թույլ տալով խուսափել "callback hell"-ից:
  • Async/Await: սինտաքսիկ շաքար promises-ի վրա, որը թույլ է տալիս գրել ավելի ընթեռնելի, սինխրոն ոճով անսինխրոնային կոդ: async նշված ֆունկցիաները միշտ վերադարձնում են promises, իսկ await օպերատորը կարող է օգտագործվել միայն async ֆունկցիաների ներսում և կանգնեցնում է կատարմանը մինչև promise-ի կատարվելը:

Համեմատություն մոտեցումների:

Մոտեցում Ընթերցելիություն Խնդիրների մշակումը Պարալել կատարմա
Callbacks Նվազագույն Կարծր Կարող է լինել բարդ
Promises Միջին Հարմար .all(), .race()
Async/Await Բարձր Հարմար (try/catch) Թույլ է տալիս ավելի բարդ լինել

Օրինակ promises-ի օգտագործման:

fetch('/api/data') // Անսինխրոն օպերացիա
  .then(response => response.json()) // Հաջող ավարտի մշակումը
  .then(data => console.log(data)) // Տվյալների մշակումը
  .catch(error => console.error('Սխալ:', error)); // Սխալի մշակումը

Օրինակ Async/Await-ի օգտագործման:

async function fetchData() {
  try {
    const response = await fetch('/api/data'); // Պատրաստվում է սպասել promise-ին
    const data = await response.json(); // Պատրաստվում է սպասել promise-ին
    console.log(data);
  } catch (error) {
    console.error('Սխալ:', error); // Սխալի մշակումը
  }
}
fetchData();