2016-05-14 40 views
0

我有JavaScript,每2.5秒刷新部分通过JS请求的轨道生成视图,以更新简单的进度栏。用户离开页面后,定时Ajax进程继续

function refreshPage(){ 
    $.ajax({ 
     type:"GET", 
     dataType:"script" 
    }) 
} 

setInterval(function(){ 
    refreshPage(); 
}, 2500); 

出于某种原因,即使在用户离开页面后,这种情况仍然存在。这在发展和生产中都会发生。停止它的唯一方法是让用户转到其他页面并使用F5进行刷新。

这可能是简单的我很想念。我是否需要某种“进度条完成,停止发送JS请求”的方法?

+0

这不应该发生。加载新页面时,所有脚本都应该停止。 – Barmar

+0

听起来不错,但它正在发生。 Rails可能会做一些奇怪的事情? – Chakron

+0

Rails无法改变浏览器的工作方式。 – Barmar

回答

0

您将要使用clearInterval(intervalID),如所描述的here,因为您需要明确停止使用setInterval()启动的计时器。

+0

他将把clearInterval()调用放在哪里? – Barmar

+0

这对我有用。 refreshPage调用检查进度条ID的存在和值。如果进度条达到0或用户导航离开页面,刷新将通过clearInterval调用停止。 – Chakron

+0

@Barmar - 这是一个公平的问题。但是,答案取决于开发人员的设计。我倾向于在我的javascript中使用OO设计,所以我倾向于有一个负责启动和停止计时器的类,具体取决于应用程序中发生的情况(主要在客户端上)。但是,我知道其他人对他们的js设计使用更多功能性的方法,在这种情况下,我想答案会有所不同。所以,我很抱歉地说,我认为答案是事实,*取决于*。 – jvillian