如图,在早期的时候,我习惯性的在 setTimeout回调函数里清除当前定时器。
但是随着时间的增长,和对回调函数的理解,我目前认为 setTimeout 执行完毕以后,其实这个 timerID 好像就没有什么用了。线程池里这个 timerID 对应的回调函数已经在主线程被执行了。是不是就没有必要 clearTimeout 了呢?
如图,在早期的时候,我习惯性的在 setTimeout回调函数里清除当前定时器。
但是随着时间的增长,和对回调函数的理解,我目前认为 setTimeout 执行完毕以后,其实这个 timerID 好像就没有什么用了。线程池里这个 timerID 对应的回调函数已经在主线程被执行了。是不是就没有必要 clearTimeout 了呢?
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
理解是正确的,当
setTimeout
的回调函数执行完毕后,其对应的timerID
实际上就已经没有用处了。因为这个timerID
只是用来标识定时器,并与该定时器相关联的回调函数一同加入事件队列等待被执行。但是,在比如多次设置、取消和重设定时器,需要
clearTimeout()
方法手动取消对应的定时器,以确保避免在不必要的情况下运行回调函数。因此,对于超出单次使用的时候,要手动清除定时器。