Я читал этот и этот, смотрел 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 с диаграммой можно найти здесь.
