В 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
});