Javascript jQuery.always()函数中的setTimeout多次激发
我已经在firefox中测试了这个问题。我有以下jquery代码:Javascript jQuery.always()函数中的setTimeout多次激发,javascript,jquery,Javascript,Jquery,我已经在firefox中测试了这个问题。我有以下jquery代码: function getSomething() { $.post(someUrl, { data: 'something' }, function (data) { // results in some data }, "json").always(function() { var timeR = 10 * 1000; // 10 seconds
function getSomething() {
$.post(someUrl, {
data: 'something'
}, function (data) {
// results in some data
}, "json").always(function() {
var timeR = 10 * 1000; // 10 seconds
var pingForSomething = setTimeout(function() {
getSomething();
}, timeR);
});
}
这个很好用。它发布到url。无论post是否成功,通过
.always()
,它都会在10秒后再次运行该功能。但是,我观察到,在长期运行(几分钟)中,此函数被多次激发(多次激发,就像在10秒内函数多次运行一样,函数的多个实例同时开始运行,导致不希望的频繁发布)。知道为什么吗?因为它总是安排设置计时器,而且因为计时器功能总是重新启动进程,所以它一直在运行。我不明白这有什么让人困惑。因为它递归地做着同样的事情:在自身上添加一个计时器事件…@Pointy多次,就像在10秒之前多次…@AxelAmthor。函数的多个实例同时开始运行,导致非常频繁的帖子。