我正在学习 Node.js 事件循环的工作原理。我了解到,在 Node.js 中运行异步代码时,微任务队列始终具有最高优先级
微任务队列由
nextTick
队列和Promise
队列组成。所以,在微任务队列中,我的理解是,nextTick
队列中的回调总是在Promise
队列中的回调之前处理。
但是,当我运行以下代码时:
process.nextTick(() => console.log("this is process.nextTick 1"));
Promise.resolve().then(() => console.log("this is Promise.resolve 1"));
即使我交换代码行,这也是我总是得到的输出。我正在 Windows 计算机上的本地 Node.js (
v20.10.0
) 项目中运行它。
this is Promise.resolve 1
this is process.nextTick 1
结果与我对微任务队列如何确定回调优先级的理解相矛盾。看起来
Promise
队列的优先级高于 nextTick
队列。
有人可以解释一下这是怎么回事吗?当我在线搜索时,我发现
nextTick
队列的优先级高于 Promise
队列。
这是我要详细了解事件循环的博客文章。
https://www.builder.io/blog/NodeJS-visualizing-nextTick-and-promise-queues#experiment-2
截图只是为了表明我这次是诚实的 XD:
Weldone 老板们,解决方案非常简单明了,但在我们深入讨论解决方案之前...... 我写了一篇关于此的文章,这是链接
您需要做的就是确认您的节点环境并确保它位于 commonJs 环境中,但如果您需要更多见解,我可以引导您逐步完成它