2015-08-22 28 views
0

我正在构建一个web应用程序来帮助一家餐厅,而且我的客户非常清楚他希望应用程序是异步的。setInterval()没有按时停止,间隔“跳跃”

在本地主机的发展我用setInterval来逐步periodicaly更新页面使用此代码的变化为每个按钮:

$('#showWaitlist').click(function(){ 
    showWaitlist(); 
    stopUpdate(interval); 
    interval = setInterval(function() { showWaitlist();}, intervalTime); 
}); 

function stopUpdate(){ 
    clearInterval(interval); 
} 

所以,每次我点击一个按钮时停止过去的时间间隔,并启动它自己。 但是,当我将应用程序移动到服务器时,它的工作正常,有时候这些事件有时会相互重叠,特别是当服务器的负载较重时或者我使用手机访问网站时。

如果setInterval和stopUpdate是js,他们不应该在客户端工作,并且几乎是即时的?什么可能导致这个间隔之间的“跳跃”? 这是一个链接到网站:http://www.emc2.mx/Pruebas/unicenta/PostodoroApp/

请注意,问题并不总是会发生,但你可以复制它,如果你在手机上运行它。

我会在这里添加showWaitlist,但我怀疑它有什么问题。

function showWaitlist(){ 
    $.ajax({     
     type:'GET', 
     url: 'waitlist.php', 
     dataType: 'html', 
     success: function(result){ 
      $('#result_table').html(result); 
     } // End of success function of ajax form 
    }); // End of ajax call 
} 
+0

st代码是什么opUpdate()? –

+0

感谢您指出!我忘了它不是香草js。我更新了帖子 – TianRB

回答

1

您将需要通过添加以下行

clearInterval(interval); // stop the timer once the time finishes. 

以下行

$('#result_table').html(result); 

你需要后清除间隔 您的代码Ajax调用成功在成功方法回调中访问区间变量

+0

这不会阻止它更新吗?我只想停止更新,如果我点击一个不同的按钮。如果我清楚Ajax成功,它会导致只更新一次不会吗? – TianRB

+0

所以你必须捕捉身体click事件和 $( '身体')。点击(函数(EVT){ 如果(evt.target.id!== “showWaitlist”){// 调用clearInterval } } –