尽管检查,为什么函数被调用的次数更多?

时间:2014-12-12 13:10:12

标签: jquery

我有一个函数(一个ajax调用),如果超时,我需要调用相同的函数2次。 所以我这样做了

所以我这样做了

var number_0f_times_called = 0; // global variable 

$.ajax({
    type: 'GET',
    url: url+'/OMS/oms1/fromscratchmodified?screen_ids=' + screen_ids,
    jsonpCallback: 'jsonCallback',
    dataType: 'jsonp',
    timeout: 5000,
    jsonp: false,
    success: function(response) {


    },
    error: function(x, t, m) {
        if(t==="timeout") {
            number_0f_times_called =  1;
            recall();
        }
    }
});

function recall()
{
   if(number_0f_times_called<=2)
   {
        $.ajax({
            type: 'GET',
            url: url+'/OMS/oms1/fromscratchmodified?screen_ids=' + screen_ids,
            jsonpCallback: 'jsonCallback',
            dataType: 'jsonp',
            timeout: 5000,
            jsonp: false,
            success: function(response) {
            },
            error: function(x, t, m) {
                if(t==="timeout") {
                    recall();
                }
            }
        });
    }
    else
    {
        alert('Data Connection Too Weak');
    }

}

问题是该函数是否继续保持调用?

2 个答案:

答案 0 :(得分:1)

因为存储调用量的变量的值始终为1。在number_0f_times_called发生时调用您的函数后,您应该添加error变量值增加:

var number_0f_times_called = 0; // global variable 

$.ajax({
    type: 'GET',
    url: url+'/OMS/oms1/fromscratchmodified?screen_ids=' + screen_ids,
    jsonpCallback: 'jsonCallback',
    dataType: 'jsonp',
    timeout: 5000,
    jsonp: false,
    success: function(response) {


    },
    error: function(x, t, m) {
        if(t==="timeout") {
            number_0f_times_called = 1;
            recall();
        }
    }
});

function recall()
{
   if(number_0f_times_called<=2)
   {
        $.ajax({
            type: 'GET',
            url: url+'/OMS/oms1/fromscratchmodified?screen_ids=' + screen_ids,
            jsonpCallback: 'jsonCallback',
            dataType: 'jsonp',
            timeout: 5000,
            jsonp: false,
            success: function(response) {
            },
            error: function(x, t, m) {
                if(t==="timeout") {
                    number_0f_times_called++;
                    recall();
                }
            }
        });
    }
    else
    {
        alert('Data Connection Too Weak');
    }

}

答案 1 :(得分:1)

因为它总是小于2 你可能想要的是number_0f_times_called += 1