【问题标题】:Stopping setInterval in coffeescript在咖啡脚本中停止 setInterval
【发布时间】:2016-01-06 23:58:01
【问题描述】:

如何在我的脚本中停止 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()

【问题讨论】:

    标签: jquery coffeescript clearinterval


    【解决方案1】:

    setInterval 每次调用它时都会返回一个新的计时器 ID,并传递该 ID clearInterval 以停止该特定计时器。所以当你这样做时:

    clearInterval order.start_poll()
    

    您只是启动一个新计时器并立即停止它,这不会对其他计时器产生任何影响。

    您需要存储 ID,以便日后取消:

    order =  
      start_poll: ->
        @interval = setInterval(@request, 60000)
      stop_polling: ->
        clearInterval(@interval) if(@interval)
        alert('expired')
      #...
    

    您可能还想在start_poll 的顶部添加一个@stop_polling() 调用。这不是必需的,但不会造成伤害,如果您决定更改与投票的交互方式,它将有助于防止将来出现错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-08
      相关资源
      最近更新 更多