Sobes.tech
Junior

Разкажи ми за конструкцията async/await в JavaScript.

sobes.tech AI

Отговор от AI

async/await — синтактичен захар върху обещанията, предназначен за по-лесно писане на асинхронен код, който изглежда синхронен.

Функцията, маркирана с думата async, винаги връща обещание. Вътре в async функция може да се използва ключовата дума await.

Операторът await се използва преди извикване на обещание. Той спира изпълнението на async функцията, докато обещанието не бъде изпълнено (resolved) или отхвърлено (rejected). Резултатът от изпълнението на обещанието (успех или грешка) се връща от await.

Ако обещанието, пред което стои 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 функция, която връща обещание
async function getValue() {
  return 10; // Това автоматично се обвива в Promise.resolve(10)
}

getValue().then(value => console.log(value)); // Ще изведе 10

Предимства на async/await:

  • Четливост на кода: Асинхронният код става по-скоро като синхронен
  • Обработка на грешки: По-лесно за използване с стандартните блокове try...catch
  • По-малко вложеност: Избягва "ад коллбэков" или дълги вериги .then().

Важно е да се помни, че await може да се използва само вътре в async функции.