如何在脚本中停止setInterval?警报工作,clearInterval
没有,并且控制台中没有任何错误。
order =
start_poll: ->
interval = setInterval(@request, 60000)
stop_polling: ->
clearInterval order.start_poll()
alert ('expired')
request: ->
id = $('#status_id').attr('data-id')
$.get "/orders/#{id}", (data) ->
console.log("#{data.status}")
if data.status is 'expired'
order.stop_polling()
$ ->
order.start_poll()
答案 0 :(得分:2)
setInterval
都会返回一个新的计时器ID,并且您传递该标识clearInterval
以停止该特定计时器。所以当你这样做时:
clearInterval order.start_poll()
你只是开始一个新的计时器并立即停止它,这对其他计时器没有任何影响。
您需要存储ID,以便以后取消:
order =
start_poll: ->
@interval = setInterval(@request, 60000)
stop_polling: ->
clearInterval(@interval) if(@interval)
alert('expired')
#...
您可能还希望在@stop_polling()
的顶部添加start_poll
来电。这不是必要的,但如果您决定改变与投票的互动方式,它可以帮助防止未来的错误。