为什么在NodeJs事件循环中从微任务转移到宏任务时,事件循环给出了不确定的信息?

问题描述

在执行以下代码时,我得到的输出为:

1
4
3
未定义
2

console.log(1)
setTimeout(() => {
console.log(2)
});
Promise.resolve().then(() => 
console.log(3)
)
console.log(4)

我了解到微队列任务是在同步任务在堆栈中完成之后执行的,并且在执行微任务(承诺调用)堆栈后将为空,宏任务将占据堆栈并被执行,并且堆栈空着。如果我没错,输出将是:

1
4
3
2

我不知道为什么执行从微任务转移到宏任务时会出现未定义。

解决方法

我猜您是在 debug-tools 控制台中运行脚本。这将解释undefined。那是因为 debug-tools 控制台将返回上一个命令的结果(在您的情况下为console.log)。

这是代码的真正运行方式:https://codesandbox.io/s/sharp-neumann-xwbut?fontsize=14&hidenavigation=1&theme=dark

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...