енные ранее в этой главе примеры кода были синхронными — содержали список инструкций, которые выполняются по порядку. Например, чтобы использовать JavaScript для обработки простых манипуляций с DOM, мы напишем:
const header = document.getElementById("heading");
header.innerHTML = "Hey!";
Это инструкции. «Эй, выбери-ка вон тот элемент с идентификатором heading. А как справишься с этим, запиши-ка приветствие в его innerHTML». Код работает синхронно. Пока происходит одна операция, остальной код ждет.
Но в современном интернете необходимо выполнять асинхронные задачи. Для этого часто приходится ждать завершения некоторой работы. Нам может потребоваться доступ к базе данных, потоковая передача видео- или аудиоконтента или данные из API. В JavaScript асинхронные задачи не блокируют основной поток, позволяя коду делать что-то еще, пока он ждет данные от API. За послед