дар бораи сохтори async/await дар JavaScript гап зан.
sobes.tech AI
Ҷавоб аз AI
async/await — шакари синтаксисӣ дар болои promises, ки барои навиштани коди асинхронӣ осонтар, ки ба назар синхронӣ менамояд, таҳия шудааст.
Функсияи нишоншуда бо калимаи async ҳамеша promise-ро бармегардонад. Дар дохили функсияи async метавон калимаи await-ро истифода бурд.
Оператор await пеш аз даъвати promise истифода мешавад. Он иҷрои функсияи async-ро то он дамо, ки promise ҳал (resolved) ё рад (rejected) шавад, бозмедорад. Натиҷаи promise (муваффақият ё хато) аз ҷониби await баргардонида мешавад.
Агар promise, ки ба await дода шудааст, рад шавад, ин истисноро ба вуҷуд меорад, ки бо блоки 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 истифода мешавад.