如何在另一个函数中调用setinterval函数不起作用

时间:2015-01-12 07:02:35

标签: javascript jquery setinterval

我希望在Ajax进程进行时显示更新的记录计数。当我点击开始进程按钮时,updateRecords()函数将执行,它将在数据库中逐个更新记录状态从打开到等待状态。同时我想显示等待记录的数量。当用户点击strat时进程按钮我想使用setinterval调用displayWaitingRecords()。

我从updateRecords()

调用这个函数
clear_Process = setInterval(function(){displayWaitingRecords()},200);

但是displayWaitingRecords()updateRecords()进程完成后才会调用。但我的要求displayWaitingRecords()也会updateRecords()执行。

显示更新记录数的功能

function displayWaitingRecords()
{
    jQuery.ajax({
        type: 'GET',
        crossDomain:true,
        async: false,
        url: "/curlRRQCount.php",
        success: function(count){
            if(count)
            {
                jQuery("#processed_poids_div").html("Processed Order ids:"+count) ;
            }                 
        }
    });  
}

单击开始处理按钮时的功能

var clear_Process = "";
function updateRecords()
{
    clear_Process = setInterval(function(){displayWaitingRecords()},200);  
    var str = jQuery("#rrq_form :input[value!='']").serialize();
    jQuery.ajax({
        async: false,
        type: 'POST',
        data : str,
        url: "/updaterecord_status.php",
        success: function(valid_result)
        {
            if(jQuery.trim(valid_result) == 'Success')
            {
                jQuery("#rrq_load_img").hide();
                jQuery("#rrq_orders_status").html("some success message");
            }
        }
    }); 
}

我做错了什么?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您已设置async: false。所以ajax调用将处理同步。将其设置为false或将其保留(因为true为默认值):

var clear_Process = "";
function updateRecords()
{
    clear_Process = setInterval(function(){displayWaitingRecords()},200);  
    var str = jQuery("#rrq_form :input[value!='']").serialize();
    jQuery.ajax({
        async: true,
        type: 'POST',
        data : str,
        url: "/updaterecord_status.php",
        success: function(valid_result)
        {
            if(jQuery.trim(valid_result) == 'Success')
            {
                jQuery("#rrq_load_img").hide();
                jQuery("#rrq_orders_status").html("some success message");
            }
        }
    }); 
}

如果你遗漏它,你会得到相同的结果:

function displayWaitingRecords()
{
    jQuery.ajax({
        type: 'GET',
        crossDomain:true,
        url: "/curlRRQCount.php",
        success: function(count){
            if(count)
            {
                jQuery("#processed_poids_div").html("Processed Order ids:"+count) ;
            }                 
        }
    });  
}