是否每次都需要清除timeout变量?

is it necessary to clear the timeout variable each time

本文关键字:清除 timeout 变量 是否      更新时间:2023-09-26

在我的应用程序中,我使用了很多setTimeout函数,所以我担心这会导致性能问题:

setTimeout(function(){
  // do something
},0);

我发现人们用这种方式:

var t=setTimeout(function(){
  // do something
  clearTimeout(t);
});

我想知道这是否必要?

不,对象将自动销毁(至少应该如此)。当需要移除已经设置的超时时,需要调用clearTimeout

例子:你设置了5秒的超时时间悬停在某些元素,但用户移动光标从元素超时之前-所以你需要删除已经初始化的超时

不,这是不必要的。使用clearTimeout()取消调度仍然在未来的超时(即防止发生)。

在发生后(或正在发生时)清除超时没有任何积极作用。

这就足够了。

setTimeout(function(){
  // do something
},0);

不,它不是。只有在需要在超时发生之前取消超时时才需要该变量。从回调内部调用clearTimeout没有效果,因为不再有超时停止

只有当你想在它发生之前取消它时才会使用