В JavaScript некоторые операции требуют времени для завершения, например, загрузка данных с сервера, чтение файла или ожидание ввода пользователя. Традиционно для решения этих асинхронных задач в JavaScript использовались обратные вызовы и обещания, что иногда могло приводить к созданию сложного и трудночитаемого кода.

Ключевое слово async

Чтобы определить функцию как асинхронную, вы используете ключевое слово async перед function.

async function fetchData() {
    // Your asynchronous code goes here
}

Это сообщает JavaScript, что эта функция может содержать асинхронный код и вернет объект особого типа, называемый Promise.

Ключевое слово await:

Внутри функции async вы можете использовать ключевое слово await, чтобы приостановить выполнение функции до тех пор, пока Promise не разрешится (завершится). Вот как вы его используете:

async function fetchData() {
    const result = await fetch('https://api.example.com/data/');
    console.log(result);
}

В этом примере await fetch(...) приостанавливает выполнение fetchData до тех пор, пока данные не будут получены. Как только данные станут доступны, они присваиваются переменной result, и вы можете работать с ними, как если бы они были получены синхронно.

Обработка ошибок:

При работе с async и await важно правильно обрабатывать ошибки. Вы можете использовать try...catch для обнаружения и обработки ошибок:

async function fetchData() {
    try {
        const result = await fetch('https://api.example.com/data');
        console.log(result);
    } catch (error) {
        console.error('Error:', error);
    }
}

Вызов асинхронной функции:

Когда вы вызываете функцию async, она возвращает Promise. Вы можете использовать .then() и .catch() для обработки результатов или ошибок, как и обычный Promise. Например:

fetchData()
    .then(data => {
        // Do something with the data
    })
    .catch(error => {
        // Handle errors
    });