Задать вопрос
@Worddoc
Frontend explorer

В чем все-таки суть асинхронности в javascript?

Изучил работу движка V8 в контексте браузера и пришло непонимание.
Везде сказано, что в javascript есть асинхронность за счет таких вещей, как, например, Promise и setTimeout.
Асинхронность - принцип, по которому код выполняется таким образом, чтобы не приостанавливать поток выполнения последующего кода программы.

Коллбеки Promise записываются в очередь микрозадач, коллбеки setTimeout записываются в очередь макрозадач(задач).
Event loop работает так: 1 задача -> вся очередь микрозадач ->  reflow/rerender -> 1 задача -> вся очередь микрозадач и так далее...
Вопрос: почему, учитывая тот факт, что пока не выполнится задача и последующая за ней очередь микрозадач, не начнется выполнение следующей задачи, везде утверждается, что в javascript есть асинхронность? Ведь "асинхронные" коллбеки не дают исполниться последующим задачам, т.к. Javascript однопоточный язык.

Или под асинхронностью в javascript подразумевается непрерывная работа интерпретатора javascript, который не блокируется и продолжает ставить в очередь задачи, а не непрерывное выполнение задач в стеке вызов?
  • Вопрос задан
  • 341 просмотр
Подписаться 2 Средний 1 комментарий
Решения вопроса 1
irestone
@irestone
Junior Web Developer
Думаю, это прояснит вопрос
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы