8.4.1 EnqueueJob ( queueName, job, arguments )
EnqueueJob 抽象操作需要三个参数:queueName,job 和 arguments。 它执行以下步骤:
- 断言:Type(queueName) 是 String 类型,其值是此内置系统识别的 Job 队列的名称。
- 断言:job 是 Job 的名称。
- 断言:arguments 变为 一个具有与 Job 所需的参数数量相同数量的元素的 List。
- 使 callerContext 变为 运行的执行上下文。
- 使 callerRealm 变为 callerContext 的 Realm。
- 使 callerScriptOrModule 变为 callerContext 的 ScriptOrModule。
- 使 pending 变为 PendingJob{ [[Job]]: job, [[Arguments]]: arguments, [[Realm]]: callerRealm, [[ScriptOrModule]]: callerScriptOrModule, [[HostDefined]]: undefined }。
- 执行任何内置系统或主机环境定义的 pending 的处理。 这可能包括修改 [[HostDefined]] 字段或任何其他中止字段。
- 在由 queueName 命名的 Job 队列的后面添加 pending。
- 返回 NormalCompletion(empty)。