Что такое асинхронность

Асинхронность — это способ выполнения кода, при котором длительные операции (например, запрос к серверу или таймер) не останавливают выполнение остальной программы. В JavaScript основной поток выполнения единственный, поэтому без асинхронности интерфейс «зависал» бы при каждой задержке.

Почему это важно

Если бы JavaScript был полностью синхронным, то при выполнении операции вроде fetch() весь интерфейс перестал бы отвечать, пока не пришёл ответ. Асинхронность позволяет продолжать взаимодействие с приложением: пользователь может кликать, скроллить и вводить данные, даже если фоновая задача ещё не завершена.

Примеры асинхронных операций

  • Запросы к API через fetch или axios
  • Чтение или запись в файловую систему (в средах, где это доступно)
  • Таймеры: setTimeout, setInterval
  • События: клики, ввод текста, загрузка изображений

Как это работает в JavaScript

JavaScript использует событийную петлю (event loop). Когда встречается асинхронная операция, она передаётся в браузерное API или среду выполнения (например, Node.js или React Native), а основной поток продолжает работу. Как только операция завершается, её результат помещается в очередь задач, и движок обрабатывает его, когда основной стек вызовов свободен.

Это означает, что асинхронный код не выполняется параллельно, но он не блокирует выполнение других инструкций.

Простой пример

console.log('Начало');

setTimeout(() => {
  console.log('Таймер сработал');
}, 1000);

console.log('Конец');

Вывод:

Начало
Конец
Таймер сработал

Строка 'Таймер сработал' появляется последней, потому что setTimeout — асинхронная функция. Она не ждёт, пока пройдёт секунда, а сразу возвращает управление, позволяя выполниться следующей строке.