答案 0 :(得分:1)
一切都始于应用程序,应用程序发出请求,事件多路分解器收集这些请求,然后形成队列(事件队列)。事件多路分解器由libuv运行,libuv是一个异步IO库,它允许Node.js执行I / O。
在该图中,您可以看到一个事件队列。实际上,不仅有1个事件队列,还有7个基本队列。这些队列具有升序优先级,最高优先级的队列由事件循环首先检查。
计时器队列具有最高优先级。 setTimeout和setInterval函数在此处排队。一旦事件在此队列中完成或时间到了,事件循环就会将这些函数传递给调用堆栈,在图中被称为执行处理程序。
一旦事件队列之一完成,而不是跳转到下一个队列,事件循环将首先检查其他2个队列,这些队列将其他微任务和process.nextTick函数排入队列。然后它将跳到下一个队列。此图将帮助您可视化事件循环。
如果事件队列中没有事件,或者事件多路分解器没有待处理的请求,则程序将完成。
note:您提到的回调队列是事件队列,调用堆栈是执行处理程序。
答案 1 :(得分:0)
感谢 packtpub.com