在NodeJS事件循环中轮询阶段

我正在通过事件循环的节点文档 ,我很困惑。 它说 –

timers: this phase executes callbacks scheduled by setTimeout() and setInterval(). I/O callbacks: executes almost all callbacks with the exception of close callbacks, the ones scheduled by timers, and setImmediate(). idle, prepare: only used internally. poll: retrieve new I/O events; node will block here when appropriate. check: setImmediate() callbacks are invoked here. close callbacks: eg socket.on('close', ...). 

然后在详细的调查阶段,他们说,它执行定时器计时器,并处理轮询队列中的I / O事件。 我的困惑是,我们已经有了这些callback的定时器阶段和I / Ocallback阶段,那么轮询阶段完成了什么工作。 它还表示,线程可能会在调查阶段睡觉,但我没有得到正确的。
我的问题是 –

  1. 当我们已经有定时器和I / Ocallback阶段时,为什么轮询阶段正在执行定时器和I / O的脚本?
  2. 它是否像轮询阶段代表定时器执行callback和I / Ocallback阶段和定时器和callback阶段只是为了内部处理没有callback在这个阶段执行?
  3. 我们在哪里可以在这个循环中放置承诺? 早些时候,我认为承诺可以简单地看成是callback,我们可以像callback一样对待它们,但是在这个video中,他说承诺进入了一个内部的事件循环,但是并没有详细讨论。

我现在非常困惑。 任何帮助将不胜感激。

我只是自己读了一下。 就定时器而言,关于事件循环的文档以示例的forms给出了一个体面的答案。 假设一个setTimeout定时器被设置为在100ms后触发,但是I / O进程正在进行(在轮询阶段)并且需要超过100ms的执行时间,比如150ms。 一旦完成,轮询阶段将返回到计时器阶段,并在150ms后执行setTimeout超过预期的100ms。

希望有助于回答轮询阶段如何与计时器阶段相关。 从本质上讲,按照我的理解,轮询阶段可以“做出决定”在必要时再次运行计时器阶段。