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