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

How to call setinterval function in another function is not working

我想在 Ajax 进程进行时显示更新的记录数。当我单击开始进程按钮时,updateRecords() 函数将执行,它将在 database.So 中一条一条地更新记录状态,同时我想显示等待记录数。为此,当用户单击在 strat process 按钮上,我想使用 setinterval 调用 displayWaitingRecords()。

我正在从 updateRecords()

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

但是 displayWaitingRecords() 直到 updateRecords() 过程才会调用 completes.But 我的要求是 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");
            }
        }
    }); 
}

我哪里做错了?任何帮助将不胜感激。

您已设置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) ;
            }                 
        }
    });  
}