[英]What is the difference between callback queue and event queue?
在 HTML 的命名法(定义浏览器的事件循环)中,两者都不正确。
我们所拥有的是“任务源” ,它们都可能 map 到不同的任务队列。
在事件循环处理开始时,用户代理将选择从哪个任务队列中执行下一个任务。 该任务本身可能触发事件,或调用回调。
这些任务通过各种方式排队,或者作为其他任务的一部分(例如,在任务开始并行工作后,当并行工作完成时,它会要求将任务排队),或者直接来自 IPC 消息(例如,用户发起的事件)。
另请注意,事件循环的一部分调用回调并由事件循环直接触发事件,而不是来自任务: 更新呈现。
在那里你会发现一个map回调和各种事件(滚动、调整大小、媒体查询等),它们在事件循环中作为这个特殊位置的一部分被调用,它本身只在一段时间内被调用一次(通常当监视器发送一个垂直同步信号)。
在回调队列中,任务大致分为两类,即微任务和宏任务(通常称为任务)。
在以下情况下,宏任务会添加到宏任务队列中:
微任务是一个简短的function ,它在 function 或创建它的程序退出后执行,并且仅当 JavaScript 执行堆栈为空时,但在将控制权返回给用户代理用来驱动脚本执行环境的事件循环之前。
微任务完全来自我们的代码。 它们通常由承诺创建:.then/catch/finally 处理程序的执行成为微任务。 微任务也在等待的“掩护下”使用,因为它是 promise 处理的另一种形式。
在文献中,您经常会看到他们将宏任务称为任务,将微任务称为作业。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.