【发布时间】:2021-09-08 15:26:41
【问题描述】:
所以我知道setTimeout 在指定的毫秒数后将传递的回调函数存储在任务队列中。我的问题是那些滴答计时器存储在哪里?例如:
setTimeout(func, 1000);
大约 1 秒后,func 被移动到任务队列,然后 - 在 JS 堆栈中。但是setTimeout 调用和将func 移动到任务队列之间的持续时间呢? func 在这一秒在期间存储在哪里?
如果我写错了,请纠正我。谢谢!
【问题讨论】:
-
在javascript引擎中:p
-
Web API 在浏览器的情况下,我猜。
-
说实话,这样的事情对您的代码没有影响,所以,除非您正在编写自己的 javascript 引擎,否则真的有“需要知道”吗?比如......数组的内容存储在哪里......在某个内存的某个地方,但这有关系吗?是否所有的 javascript 引擎都工作相同(否)... 使用 jacascript,有比内部工作方式更好的事情要关心:p(这只是我的意见,没有伤害没有恶意)
-
您还可以将它们分配给像
var t = setTimeout(f, n)这样的变量,您以后可以像clearTimeout(t)这样使用它。 -
@Rod911 - 在至少 Firefox 的浏览器中,
setTimeout只返回一个数字 - 所以..这不是“等待超时的超时代码”:p 我认为 OP 想知道在哪里setTimeout “等待”到“触发”?我认为它只是
标签: javascript settimeout callstack event-loop