Проверяет понимание механизма ожидания выполнения промиса в асинхронных функциях JavaScript.
Ключевое слово await используется исключительно внутри функций, объявленных с ключевым словом async. Его основная задача — приостановить выполнение асинхронной функции до тех пор, пока переданный Promise не будет разрешён (fulfilled) или отклонён (rejected). После этого выполнение функции возобновляется, и результатом выражения await становится значение, с которым был разрешён Promise.
Без await асинхронный код часто строился на цепочках вызовов .then(), что могло приводить к так называемому "аду колбэков" и менее читаемому коду. await позволяет писать асинхронные операции так, как будто они синхронные, что значительно улучшает читаемость и поддержку кода.
Рассмотрим простой пример: получение данных с сервера. Без await код выглядел бы так:
function fetchData() {
return fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => console.log(data));
}С использованием async/await тот же код становится более линейным и понятным:
async function fetchData() {
const response = await fetch('https://api.example.com/data');
const data = await response.json();
console.log(data);
}Важно помнить, что await блокирует выполнение только внутри текущей асинхронной функции, но не блокирует весь поток выполнения программы. Другие задачи (например, обработка событий или другие асинхронные операции) могут выполняться параллельно.
Для обработки ошибок при использовании await применяется конструкция try...catch, что делает код ещё более похожим на синхронный:
async function fetchData() {
try {
const response = await fetch('https://api.example.com/data');
if (!response.ok) throw new Error('Network response was not ok');
const data = await response.json();
console.log(data);
} catch (error) {
console.error('Fetch error:', error);
}
}await — это мощный инструмент для работы с асинхронными операциями в JavaScript, который делает код более читаемым и поддерживаемым. Его стоит применять везде, где требуется последовательное выполнение асинхронных задач, особенно при работе с API, файловыми операциями или таймерами.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию