Я читал этот и этот, смотрел this...
Я составил схему того, как я ее понимаю:
- Обратные вызовы (функции) Javascript могут присутствовать в
current queue
,check queue
,close callbacks queue
,timers queue
иI/O callbacks queue
. - Js-код запускается только из
current queue
одной функции (задачи/задания) за раз. - Js-код, выполняемый в настоящий момент, может добавить микротаски (задания) к
current queue
, которые будут выполняться после себя и макрозадачи (задачи), вcheck queue
. Он может добавлять задачи в другие очереди только не так, попросив API сделать это. Фаза -
Idle, prepare
используется для некоторого внутреннего бизнеса node js (может быть, как сборка мусора). -
Poll
фазовый опрос потоков из пула потоков и заполняет очереди соответствующими обратными вызовами. Фазы -
Idle, prepare
иPoll
не имеют очередей для связанных с ними js-обратных вызовов. - (четыре) Темы в
thread pool
идентичны и не имеют специализации. - Цикл событий принимает и выполняет задачи один за другим из каждой очереди до тех пор, пока не будет пуст, а затем перейдет к следующей очереди.
- Задачи в очередях не имеют связанных с ними заданий (микросервисов). Задания создаются только во время выполнения задачи или другого задания и присутствуют только в
current task queue
.
Является ли это понимание правильным или я что-то упускаю?
Файл MS Power Point.pptx с диаграммой можно найти здесь.