Я читаю шаблоны проектирования Node.js. Я застрял в понимании схемы реактора. Я не вижу здесь никакого стека вызовов. Я думал, что стек вызовов был одной из основных частей дизайна Node.js. Может ли кто-нибудь помочь мне понять эту схему? Также отсутствует очередь обратного вызова.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Все начинается с приложения, приложение делает запросы, а демультиплексор событий собирает эти запросы, формирует очереди, Event Queues. Демультиплексор событий запускается libuv, библиотекой асинхронного ввода-вывода, которая позволяет Node.js выполнять ввод-вывод.
На схеме вы видите одну очередь событий. на самом деле есть не только 1 очередь событий, есть 7 основных очередей. эти очереди имеют возрастающие приоритеты, очередь с наивысшим приоритетом проверяется циклом обработки событий первой.
Очередь таймеров имеет наивысший приоритет. Здесь функции setTimeout и setInterval ставятся в очередь. Как только события выполняются в этой очереди или время истекло, цикл событий передает эти функции в стек вызовов, на диаграмме он называется обработчиком выполнения.
Как только одна из очередей событий будет выполнена, вместо перехода к следующей очереди цикл событий сначала проверит 2 другие очереди, которые ставят в очередь другие микрозадачи и функции process.nextTick. Затем он перейдет к следующей очереди. эта диаграмма поможет вам визуализировать цикл событий.

Если в очереди событий нет событий или у демультиплексора событий нет ожидающих запросов, программа завершится.
примечание: упомянутая вами очередь обратного вызова - это очередь событий, а стек вызовов - обработчик выполнения.
Кредит для packtpub.com
Да, я думаю, что подобная диаграмма кого угодно смутит... если бы вы просто посмотрели на какой-то пример кода, а не пытались интерпретировать сложные диаграммы, которые на самом деле ничего не проясняют, я думаю, какой бы ни был «шаблон реактора», это было бы вам намного понятнее. Я предполагаю, основываясь на названии, что это означает «программирование на основе событий», которое очень естественно писать на Node.js.