【问题标题】:Why event loop is giving undefined while moving from micro task to macro task in NodeJs event loop? [duplicate]为什么在 NodeJs 事件循环中从微任务移动到宏任务时事件循环未定义? [复制]
【发布时间】:2020-09-06 14:00:24
【问题描述】:

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

1
4
3
未定义
2

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

我理解微队列任务是在栈中同步任务完成后执行的,微任务(promise call)执行后栈为空,宏任务会占用栈并执行,栈变空。如果我是正确的输出将是:

1
4
3
2

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

【问题讨论】:

  • 你是如何运行这段代码的?
  • @codemax 我正在浏览器控制台中运行这段代码。也作为节点应用程序运行。

标签: javascript node.js promise dom-events event-loop


【解决方案1】:

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

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

【讨论】:

  • 我也作为 Node 应用程序运行并得到相同的结果。控制台将如何返回结果。你能举个例子吗?
猜你喜欢
  • 2019-01-31
  • 2014-11-12
  • 1970-01-01
  • 2019-02-14
  • 2021-05-17
  • 1970-01-01
  • 2023-03-04
  • 1970-01-01
相关资源
最近更新 更多