Sobes.tech
Junior

дар бораи сохтори 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 истифода мешавад.