Jon*_*ood 2 javascript jquery timer setinterval
我的ASP.NET MVC页面每秒使用JavaScript/jQuery轮询我的数据库.
这是有效的,但我想确保,如果有延迟,我的计时器处理程序将不会再次被调用.
除了将计时器ID存储在全局变量中,清除处理程序中的计时器,并在处理程序完成时重新启动计时器,除此之外还有任何技巧.
注意:我意识到每一秒似乎都很频繁,但此代码在提交信用卡付款后轮询我的服务器.通常情况下,它只运行一秒左右,我不希望用户等待超过必要的时间.
每秒轮询一次?那太重了!
这且不说,当你不会有这个问题setTimeout是用来代替setInterval.后者确保一段代码在给定间隔的情况下运行x次,而前者确保存在至少x毫秒的延迟.
function some_poller() {
$.ajax({
url: '/some_page',
success: function() {
setTimeout(some_poller, 1000);
},
error: function() { // Also retry when the request fails
setTimeout(some_poller, 1000);
}
});
}
// Init somewhere
some_poller();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
335 次 |
| 最近记录: |