繁体   English   中英

事件队列和任务队列之间有什么区别吗?

[英]Is there any difference between event queue and task queue?

我对这两个名字有些困惑,它们彼此相同吗?

ECMAScript中没有“事件队列”,也没有“事件循环”和“任务队列”。

ES262规范仅说明:

8.4作业和作业队列

Job是抽象操作,当当前没有其他ECMAScript计算正在进行时,它将启动ECMAScript计算。 可以将作业抽象操作定义为接受任意一组作业参数。 仅当没有正在运行的执行上下文并且执行上下文堆栈为空时,才能启动作业的执行。 PendingJob是对将来执行作业的请求

[...]

通过在作业队列上使包含作业抽象操作名称和任何必要参数值的PendingJob记录入队,来请求将来执行作业。

在ECMAScript中,只有两个Job队列,一个用于承诺解析,一个用于模块/代码的初始加载,但是该规范允许显式定义更多队列。

其他所有内容不是由ECMAScript本身定义的,而是由运行时实现或其他规范定义的。


您正在谈论的“任务队列”就是一个例子:

对于Webrowsers,它们被定义为针对浏览器特定事件的ES作业队列。 本规范还使用术语“事件循环”(也是一个通用术语)来描述清空作业队列的逻辑。

因此,可能使用“事件队列”,因为

a)如果您说有一个“事件循环”清空了“一个事件队列”,它简化了多个作业队列的概念。

b)人们从不阅读规格。

c)该术语是创造的,从未指定。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM