Вопрос проверяет понимание механизмов асинхронности в JavaScript, таких как колбэки, промисы и async/await, что необходимо для работы с сетевыми запросами и таймерами.
JavaScript является однопоточным языком, но благодаря event loop он может обрабатывать асинхронные операции, такие как запросы к серверу или таймеры, не блокируя основной поток. Асинхронный код не выполняется мгновенно, а ставится в очередь задач, которая обрабатывается после завершения синхронного кода.
Раньше асинхронность реализовывалась через колбэки — функции, передаваемые в качестве аргументов. Это приводило к сложночитаемому коду (callback hell).
setTimeout(() => {
console.log('Прошла 1 секунда');
}, 1000);Промисы (Promise) представляют собой объект, который может находиться в состояниях: pending, fulfilled или rejected. Они позволяют цепочечно обрабатывать результаты с помощью .then() и .catch().
fetch('/api/data')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));Синтаксис async/await делает работу с промисами более удобной, позволяя писать асинхронный код как синхронный. Функция с ключевым словом async возвращает промис, а await приостанавливает выполнение до его разрешения.
async function getData() {
try {
const response = await fetch('/api/data');
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}
}Асинхронность в JavaScript необходима для работы с операциями ввода-вывода, сетевыми запросами и таймерами. Использование промисов и async/await делает код более читаемым и поддерживаемым, особенно в современных приложениях.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию