【发布时间】:2018-03-11 03:45:07
【问题描述】:
我正在通过节点docs 进行事件循环,我很困惑。 它说-
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: e.g. socket.on('close', ...).
然后在详细的轮询阶段,他们说它执行定时器调度的定时器,并处理轮询队列中的 i/o 事件。我的困惑是我们已经有这些回调的计时器阶段和 i/o 回调阶段,那么轮询阶段所做的工作是什么。它还说线程可能在轮询阶段休眠,但我没有正确理解。
我的问题是-
- 当我们已经有了定时器和 i/o 回调阶段时,为什么 poll 阶段正在执行定时器和 i/o 的脚本?
- 是否像 poll 阶段代表计时器和 i/o 回调阶段执行回调,而计时器和回调阶段仅用于内部处理,在此阶段不执行回调?
- 在这个循环中我们可以在哪里放置 Promise?之前我认为可以将 promise 简单地视为回调,我们可以将它们视为回调,但在 this 视频中,他说 promise 进入内部事件循环,但没有详细讨论。
此时我很困惑。任何帮助将不胜感激。
【问题讨论】:
标签: javascript node.js event-loop