And*_*rew 3 javascript memory settimeout
这个问题可能是微不足道的,但我对我应该做的事感到困惑.
基本上,我注意到我调用的每个连续超时都有一个更大的ID号.我确信这只是为了减少ID冲突,但我担心即使超时已经执行,它仍然存在于内存中.
如果执行了超时功能,您是否需要调用任何" 删除 "它?在我的代码中,我这样做:
clearTimeout(time);// destroy previous timer?
time = setTimeout( function(){ hitup( towards );}, ms);// next execution
Run Code Online (Sandbox Code Playgroud)
Javascript引擎如何实现timerID值存储完全取决于实现.它们可能使用某种映射或散列表,因为这是像这样的稀疏(非顺序)值的经典存储机制.
以前触发或清除的计时器仍然不会处于活动状态或使用内存.您无需调用任何内容来删除计时器.
你展示的代码:
clearTimeout(time);// destroy previous timer?
time = setTimeout( function(){ hitup( towards );}, ms);// next execution
Run Code Online (Sandbox Code Playgroud)
有时候仍然有用.如果您还不知道变量中的计时器存储time是否已经实际触发并且您不希望它再次触发并且您将要覆盖存储其ID的变量,那么有时调用它是有意义clearTimeout()的那种情况.如果您知道计时器已经触发或者您希望它被触发,则无需调用clearTimeout()它.
系统将在此处理内存管理.这不是你必须担心的事情.你只需要担心停止计时器,如果它还没有被解雇,你不希望它在预定的时间点火.