是否有必要在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
将变为无效。