Node.js 中 process.nextTick 与 setImmediate 的执行顺序陷阱:一次事件循环排查记录
在一个需要批量处理文件上传的 Node.js 服务里,我遇到了回调执行顺序不符合预期的问题:用 process.nextTick 注册的任务总是在 setImmediate 之前执行,但官方文档又说两者的顺序取决于当前所处的阶段。实际调试时发现,在 I/O 回调内部,setImmediate 永远先于 setTimeout(fn, 0),而在主模块中却可能相反。这种差异导致依赖执行时序的清理逻辑偶尔失效,比如数据库连接在日志写入之前就被释放。本文从一次真实的事件循环排查出发,梳理 Node.js 六个阶段与...