日期:2014-05-16  浏览次数:20315 次

js中的setTimeout和setInterval
  12月底到的北京,公司叫moode。
  我做的第一件事就是调试之前一直做的party-bid应用,包括服务器端数据同步的功能。party-bid应用app不是重点,其实公司要用来展示的,主要是网页端的展示。因为时间比较急,应用的页面主要是过去的版本,功能还是要自己实现。首先进入的是竞价人列表,这个列表要求于手机端app数据同步,也就是说,列表必须实时的更新数据。
  最简单的方法是在页面head加入:
  %meta(http-equiv="refresh" content="3")

  这样是可以实现页面的每隔3秒刷新一次的功能,但会出现一个问题。当你点击页面上其他的按钮跳转到其它不需要刷新的页面的时候,在其它页面也会刷新一次,自动回到原先的页面。
  这时,我尝试着用js的方法来实现,这需要在haml中嵌入js代码,最初是这样更新的:
:javascript
  setTimeout("location.href='bid_show'",3000)

  这样做问题还是没有解决掉。在网上查找后,如果不用setTimeout,可以用setInterval的方法来做,两者是有区别的:
  setTimeout是延迟一定时间后来执行function or code,而setInterval是每隔一定时间执行code,之所以setTimeout可以完成持续刷新页面的功能,是因为在setTimeout的function中重复调用的了自己。
  这是setTimeout 和setInterval的区别。但两者都没有解决上面的问题,很明显,他们持续刷新后并没有一个机制来让他们停止下来,让刷新停止下来应该就是关键所在。上网一查,果然有相关解决方法:
:javascript
  var refresher_all;
  refresher_all = setInterval("location.href='bid_show'",3000)
  function stop_refresh_all(){
        window.clearInterval(refresher_all)
        //location.href='no_repeat_info'
  }