Sobes.tech
Middle

Чаро сохтори async/await ворид карда шуд ва чӣ гуна он бо коди асинхронӣ беҳтар мекунад?

sobes.tech AI

Ҷавоб аз AI

Async/await даромад шудааст, то навиштани коди асинхронро содда кунад, онро ба назар барин ва нигоҳдории онро нисбат ба callbacks ё 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 ҳал шавад, арзиши ҳалшудаи онро бармегардонад ё истисноро дар ҳолати хато бармеангезад.