如何解决运行 setTimeout 存储在哪里?
所以我知道 setTimeout
在指定的毫秒数后将传递的回调函数存储在任务队列中。我的问题是那些滴答作响的计时器存储在哪里?例如:
setTimeout(func,1000);
大约 1 秒后,func 被移动到任务队列,然后 - 在 JS 堆栈中。但是 setTimeout
调用和将 func
移动到任务队列之间的持续时间如何? func
在这一秒期间存储在哪里?
如果我写错了,请纠正我。谢谢!
解决方法
根据规范,对于实现 List of Active Timers 的对象,应该存在一个 WindowOrWorkerGlobalScope
mixin(换句话说,列表应该存在于浏览器的 <OD><ID>11</ID></OD>
对象中) ,但是,似乎无法访问。围绕此事还有其他问题(例如 this)。
在任何情况下,如果您非常需要跟踪活动计时器(window
和 setInterval
的列表是相同的),(在内部,setTimeout
与 setInterval
相同,但带有 setTimeout
标志),您可以尝试代理这些方法。
像这样:
(这个例子可以扩展,更多的数据可以存储在 repeat
集合中,比如 activeTimers
、id
、handler
甚至一些辅助方法来触发或一次中止每个计时器或所有计时器。以下内容应遵守规范。)
duration
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。