如何连续5秒进行ajax调用。
我使用了setTimeout
,如下所示,
setTimeout(function()
{
someFn();
}, 200);
但它使用更多数据库连接。任何人都可以告诉我一个有效的方法连续5秒钟调用一个函数。
我在setTimeout或setInterval中使用的函数将用于将值更新到database.hence这将增加数据库连接。并导致丢失数据库连接错误。所以我需要一些不会增加数据库连接的东西
我正在使用以下代码
push_notification('<?php echo $user_details1[0]['id']; ?>');
setInterval(function()
{
push_notification('<?php echo $user_details1[0]['id']; ?>');
}, 10000);
function push_notification(driver_id)
{
var dataS = "&type=1&driver_id="+driver_id;
var SrcPath = "<?php echo URL_BASE; ?>";
var response;
$.ajax
({
type: "POST",
url: SrcPath+"driver/adminpushnotification/1",
data: dataS,
cache: false,
dataType: 'html',
success: function(response)
{
//some Functionality
}
});
}
答案 0 :(得分:1)
这将每fn
毫秒执行interval
,并且在duration
毫秒后它将停止。
var duration = 5000,
interval = 200,
intervalTimer;
intervalTimer = setInterval(function() {
fn();
}, interval);
setTimeout(function() {
clearInterval(intervalTimer);
}, duration);
但是,如果您在间隔回调中发出ajax请求,并且希望阻止在先前请求仍处于待处理状态时发出新请求(因为我现在正在解释您的问题),您可以检查状态在创建新请求之前的先前请求。如果您正在使用jQuery,它可能看起来像这样:
var duration = 5000,
interval = 200,
xhrPending = false,
intervalTimer;
intervalTimer = setInterval(function() {
if (xhrPending) return;
$.ajax(...).done(function() {
xhrPending = false;
});
xhrPending = true;
}, interval);
setTimeout(function() {
clearInterval(intervalTimer);
}, duration);
答案 1 :(得分:0)
This will execute for every 3 seconds.
<button onclick="setInterval(function(){alert('Hello')},3000);">Click Me</button>
答案 2 :(得分:0)
一种hacky方式是每隔200毫秒调用一次25次,导致5秒后停止(25次通话)。
这将在5秒后清除间隔之前调用函数ajaxCall()25次。
var ajaxInterval = setInterval(function(){AjaxTimer()},200);
var counter = 1;
function AjaxTimer()
{
if(counter > 25) {
clearInterval(ajaxInterval );
} else {
ajaxCall();
counter++;
}
}