Node.js 中 process.nextTick 和 setImmediate 的执行顺序到底谁先谁后
写 Node.js 的时候经常遇到这样的困惑:明明 setImmediate 名字看起来像是“立即执行”,但实际跑起来有时候却比 process.nextTick 还晚。更让人摸不着头脑的是,在 I/O 回调里调用这两个函数,顺序又和顶层代码里不一样。这个问题在面试和实际排查异步逻辑时都挺常见,尤其是写中间件、日志上报或者做资源清理的时候,如果搞错了执行时机,可能导致状态还没准备好就被读取,或者异常没被正确捕获。这篇文章从事件循环的 phases 入手,结合几段能直接跑的代码,把 n...