完全setImmediate
和setTimeout
的所有阶段都会通过。
没有很好地解释所有阶段的确切设置是什么,并且setTimeout经历了,请在阶段概述部分说明I / O回调阶段负责setImmediate并再次查看nodeJS guide在民意调查和检查部分说检查阶段负责setImmediate。 所以我对它有点困惑。 IO /回调或检查或两者兼而有之。
有人可以解释事件循环中setTimeout
和setImmediate
的生命周期以及它们的执行方式。
答案 0 :(得分:0)
setTimeout回调在计时器阶段执行,而setImmediate回调在检查阶段执行。
由于计时器阶段在检查阶段之前,因此setTimeout(fn,0)将在setImmediate回调之前执行。
文档中也提到了这一点,下面在“阶段概述”部分中引用了轮询阶段,其中提到了异常。
轮询:检索新的I / O事件;执行与I / O相关的回调(几乎所有关闭回调的 exception ,由计时器安排的和setImmediate());适当时,节点将在此处阻塞。