Junior
պատմիր ինձ մասին async/await կառուցվածքի մասին JavaScript-ում։
sobes.tech AI
Պատասխան AI-ից
async/await — սինտաքսիկային շաքար է promises-ի վրա, որը նախատեսված է ավելի պարզ գրել ասինխրոնային կոդ, որը տեսք ունի սինխրոն։
Ֆունկցիան, նշված բառով async, միշտ վերադարձնում է promise։ async ֆունկցիայի ներսում կարելի է օգտագործել await բանալի բառը։
Օպերատոր await-ը օգտագործվում է promise-ի կանչից առաջ։ Այն կանգնեցնում է async ֆունկցիայի կատարմանը մինչև որ promise-ը լուծվի (resolved) կամ մերժվի (rejected)։ Promise-ի արդյունքը (հաջողություն կամ սխալ) վերադարձվում է await-ով։
Եթե await-ով նշված promise-ը մերժվի, դա առաջացնում է արտահայտություն, որը կարելի է բռնել try...catch բլոկով։
// Օրինակ `async/await`-ի օգտագործման
async function fetchData() {
try {
// Կատարման սպասում է ասինխրոնային օպերացիայի (օր. API հարցում)
const response = await fetch('https://api.example.com/data');
// Պատասխանն անալիզացնում ենք JSON-ով
const data = await response.json();
// Տվյալները ցուցադրում ենք
console.log(data);
} catch (error) {
// Հնարավոր սխալը բռնում ենք
console.error('Սխալ տվյալների ստացման ժամանակ:', error);
}
}
// Կոչ ենք անում `async` ֆունկցիան
fetchData();
// `async` ֆունկցիա, որը վերադարձնում է promise
async function getValue() {
return 10; // Սա ավտոմատ կերպով փաթեթավորվում է Promise.resolve(10)
}
getValue().then(value => console.log(value)); // Ցուցադրում է 10
async/await-ի առավելությունները՝
- Կոդի ընթերցելիություն: Ասինխրոնային կոդը ավելի շատ նման է սինխրոնին
- Սխալների կառավարում: Հեշտ է օգտագործել ստանդարտ
try...catchբլոկներով - Փոքր ներսի մակարդակ: Խուսափում է "callback-ների դժոխքից" կամ երկար շղթաներից
.then()
Կարևոր է հիշել, որ await-ը կարող է օգտագործվել միայն async ֆունկցիաների ներսում։