想要做以下事情:
1)每3分钟jquery开始执行,转到外部php,检查会话值
2)返回(从外部php)并显示剩余时间计数器
在前3分钟后,所有工作都按预期进行。但是在第二个3分钟后,我得到function updateClock ( )
执行2次,在第3个3分钟之后,好像执行了3次,依此类推。
如何在每次执行时重置$('#remaining_time').html()
?尝试在外部php插入像?> <script type="text/javascript">$('#remaining_time').html('');</script> <?php
这样的javascript,但它没有帮助。在每次执行时,我想重置剩余时间计数器。
这是代码(代码的一部分)
Html
<div class="div_show_hide" id="logout_warning_popup">
<div class="" style="position:absolute; width:100%; height:100%; left:0; bottom:0; background: rgba(199,199,199,0.9); display: table; ">
<div style="display: table-cell; vertical-align: middle; text-align:center;">
<span style="align:center; width:200px; height:200px; border:solid 0px red; background:#fff; padding:20px;">
Session will expire after <span id="remaining_time"></span> seconds.
</span>
<br/>
<span style="cursor:pointer; border:solid 1px green; margin:0 10px 0 0;" id="continue_session">Continue the session</span>
</div>
</div>
</div>
Jquery的
function logout_with_warning() {
$.post("_logout_warning.php", function(data_logout_warning) {
$('#logout_warning_popup').show();
var time_when_must_logout = new Date().setTime(new Date().getTime() + 1000 * 60 * 2);//2 minutes
$('#remaining_time').html( '' + Math.round( ( ( parseInt(time_when_must_logout,0) - parseInt((new Date().setTime(new Date().getTime())),0) ) )/1000 ) );
function updateClock ( ){
$('#remaining_time').html( '' + Math.round( ( ( parseInt(time_when_must_logout,0) - parseInt((new Date().setTime(new Date().getTime())),0) ) )/1000 ) );
}
setInterval( updateClock, (1000*1) );// one second
});
}
setInterval( logout_with_warning, (60000*3) );
答案 0 :(得分:1)
当您在ajax调用的回调中调用setInterval
时,您将有两个setInterval
调用处于活动状态,这两个调用都会一直调用 logout_with_warning 函数定期。在接下来的ajax呼叫之后,你会有三个人这样做......等等。
您可以通过使用setTimeout
替换这些调用来轻松解决此问题,declare var _createLib: (config: Object) => Promise<Lib>;
export default _createLib;
export interface Lib {
version: string;
}
只调用一次回调函数。