随后的ajax调用延迟

时间:2014-03-04 10:04:46

标签: jquery ajax setinterval

var F = function() {
    $.ajax({
        .
        .
        .
    })
    .done(function() {
        console.log('Hey, I am done');
        setInterval(F, 10000);
    });
}

所以我想每10秒更新一些东西。问题是每次ajax调用完成后都会调用自己两次。所以输出是:

Hey, I am done //First call (without delay)

// After 10 seconds
Hey, I am done

// After 20 seconds
Hey, I am done
Hey, I am done

// After 30 seconds
Hey, I am done
Hey, I am done
Hey, I am done
Hey, I am done

继续...... 我在这里显然遗漏了一些东西!谁能开导我?

3 个答案:

答案 0 :(得分:3)

不要使用间隔,使用超时:

setTimeout(F, 10000);
顺便说一句,你应该完整地调用它,而不是成功:

 .always(function() {
        setTimeout(F, 10000);
    });

答案 1 :(得分:1)

这是因为你有一个创建F的请求队列的间隔,每次增加1。请尝试使用setTimeout。

答案 2 :(得分:1)

添加额外的代码行

    done(function() {
            console.log('Hey, I am done');
            clearInterval(F); // clear the interval F
            setInterval(F, 10000); //reset the interval F
        });