作业队列和JavaScript运行时

Job Queues and the JavaScript runtime

本文关键字:运行时 JavaScript 作业队列      更新时间:2023-09-26

Node.js公开process.nextTick,这确保在将控制权返回到运行时时调用提供的回调。这会有"饿死事件循环"的风险,因为这会阻止对作业队列上的作业进行评估。

Internet Explorer暴露了setImmediate,据我所知,它使用了一个单独的作业队列和一些逻辑,以便每个循环迭代一次从队列中弹出项目,排除了"事件循环饥饿"。

requestAnimationFrame维护自己的回调队列,这些回调队列将在图形子系统的VBLANK之前一个接一个地被调用。

是否可以说JavaScript运行时协调来自各种队列的作业的运行,将它们提供给事件循环,以便在特定于这些队列的算法确定的时间执行,并且在某种意义上,正在发生的事情比单个任务队列服务的单个事件循环更复杂?

队列是如何工作的以及是否有多个是特定于实现的,但也可以有多个队列和特殊规则来声明哪个队列中的哪个作业将首先运行。