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
继续...... 我在这里显然遗漏了一些东西!谁能开导我?
答案 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
});