是否有必要在Coffeescript的递归调用函数中调用clearTimeout()

我担心的是,如果此函数每秒运行多次,是否不调用clearTimeout()可能会随时间推移引起某种内存泄漏。我的想法是JS垃圾收集器处理此问题,但要仔细检查。

我正在研究的websockets / socket.io实现中的一个人为的示例:

socket.on 'dataReceived', => @_recursive_fn()

_recursive_fn: ->
  @timer = setTimeout (=>
    clearTimeout(@timer) # is this necessary?
    @_recursive_fn() if some_condition == true
  ), 30

最佳答案

不,setTimeout安排一次性事件。一旦事件发生,具有该句柄的clearTimeout将变为无效。

10-04 19:20