Node.js - setTimeout - 执行顺序

问题描述 投票:0回答:1

在此代码中:

setTimeout(() => console.log('C'), 100); 
setTimeout(() => console.log('D'), 0);

someSynchronousTask() // Assume this takes ~500ms

这会记录

D -> C
,但为什么呢?

为什么不记录

C -> D
?由于
C
的 setTimeout 首先被推送到事件循环队列,并且已经过去了 500 毫秒,即 > 100 毫秒。因此,现在两个 setTimeouts 都已准备好执行。那么,它应该执行“C”,因为它之前被推入队列了?

javascript node.js settimeout event-loop
1个回答
0
投票

我的英语不好。

看起来你先执行 setTimeout 函数,然后运行需要 500ms 的函数。

但是请注意

JavaScript
是从上到下运行的。

根据我的理解和查阅MDN网络文档,找到了解决方案:

https://developer.mozilla.org/en-US/docs/Web/API/setTimeout 说“setTimeout() 是一个异步函数”

因此

setTimeout
和您的任务是异步运行的。

谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.