ECMAScript определяет 2 типа работ как обязательные: Promise Jobs и Script Jobs. Ситуация с Promise Jobs понятна: создал себе Promise или асинхронную функцию - и все, новая Promise Job создана и добавлена в очередь.
Но как обстоит дело со Script Jobs? Что нужно сделать, чтобы создать работу этого типа?
Знаю, что к Script Jobs относятся также код модулей. Но разве при импортировании модуля его код не выполняется сразу же? Хотя спецификация говорит, что работы для того и нужны, чтобы "откладываться" и выполняться позже (как в ситуации с Promise'ами).
Короче говоря, что нужно сделать, чтобы инициировать новую работу и добавить ее в очередь Script Jobs?
Единственное упоминание ScriptJob с точки зрения постановки в очередь относится к пункту 8.6 RunJobs - на втором шаге написано:
Тут написано примерно следующее: надо выбрать те скрипты, которым суждено исполняться - и положить их в очередь. Далее на третьем шаге описывается их исполнение по порядку.
В свою очередь, RunJobs в других местах спецификации не упоминается, это точка входа.
Получается, ScriptJob - это любой код, который хост решил загрузить и исполнить по каким бы то ни было причинам. Ключевой момент данного описания - в том, что постановка ScriptJob в очередь и исполнение всех очередей - два этапа одной и той же операции RunJobs, таким образом в соответствии со спецификацией невозможно исполнить произвольный код и при этом не исполнить ожидающих продолжений (PromiseJob).
Зачем все так сложно расписано - я не знаю. Видимо, они пытаются сделать такую спецификацию чтобы ее нельзя было в принципе прочитать по-разному (или просто нельзя было прочитать)
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники