Есть ли разница между очередью событий и очередью задач?

Меня немного смущают эти два имени, они одинаковые друг с другом?


person Chor    schedule 04.03.2019    source источник
comment
См. stackoverflow.com/questions/40880416/, я думаю, что ваш вопрос дублирует этот.   -  person SteveB    schedule 04.03.2019
comment
stackoverflow.com/questions/49729247/ и stackoverflow.com/questions/40880416/ может быть полезным. Возможно также developer.mozilla.org/en-US/docs/Web/ JavaScript/цикл событий   -  person ADyson    schedule 04.03.2019
comment
Нет дубликата, они не упомянули очередь задач, которая появляется в некоторых блогах.   -  person Chor    schedule 04.03.2019
comment
Никто не называл вышеизложенное дубликатами, просто, может быть, как потенциально интересный или полезный материал для чтения для объяснения концепций в этой области. В каких блогах вы видите очередь задач... не уверен, что это правильная/формальная терминология, используемая стандартами Javascript   -  person ADyson    schedule 04.03.2019
comment
Событие — это то, что нужно обработать, задача — то, что можно запустить. Эти два термина могут точно описывать тип структуры данных, которую конкретная реализация ставит в очередь, или они могут использоваться небрежно и относиться к одному и тому же. В конце концов, событие для запуска задачи и задача для обработки события взаимозаменяемы.   -  person Bergi    schedule 04.03.2019


Ответы (1)


В ECMAScript нет «очереди событий», также нет «цикла событий» и «очереди задач».

Спецификация ES262 говорит только:

8.4 Задания и очереди заданий

Задание — это абстрактная операция, которая инициирует вычисление ECMAScript, когда в данный момент не выполняется никакое другое вычисление ECMAScript. Абстрактная операция задания может быть определена для принятия произвольного набора параметров задания. Выполнение задания может быть инициировано только тогда, когда нет запущенного контекста выполнения и стек контекста выполнения пуст. PendingJob — это запрос на будущее выполнение задания.

[...]

Запрос на будущее выполнение задания выполняется путем помещения в очередь заданий записи PendingJob, которая включает имя абстрактной операции задания и любые необходимые значения аргументов.

В ECMAScript есть только две очереди заданий, одна для разрешения промисов и одна для начальной загрузки модулей/кода, однако спецификация позволяет явно определять больше очередей.

Все остальное не определяется самим ECMAScript, а определяется реализациями времени выполнения или другими спецификациями.


«Очереди задач», о которых вы говорили, являются примером этого:

Они определены для веб-браузеров как очереди заданий ES для конкретных браузеров. События. В этой Спецификации также используется термин «цикл событий» (который также является общепринятым термином) для описания логики, очищающей очереди заданий.

Поэтому «очередь событий», вероятно, используется, потому что

а) это упрощает концепцию нескольких очередей заданий, если вы говорите, что существует «один цикл событий», который очищает «одну очередь событий».

б) люди никогда не читают спецификации.

в) термин был придуман и никогда не уточнялся.

person Jonas Wilms    schedule 04.03.2019
comment
Я бы сказал, что термин «очередь событий» используется потому, что фактические реализации помещают объекты событий в свою структуру данных очереди, а не задачи (единицы исполняемого кода?). Кроме того, эта концепция намного старше спецификации HTML5. - person Bergi; 04.03.2019
comment
@bergi, тогда мало смысла в том, что цикл событий проходит через очереди задач ... И спецификация HTML5 существует, пока я могу думать, поэтому я не могу сказать, был ли какой-либо из терминов придуман раньше ... - person Jonas Wilms; 04.03.2019