我有问题,我似乎无法停止计时器......事实上它加速了!
var number = 0;
var timer;
function get_data( url ){
number++;
$('#requests').html( number );
$.ajax({
type: 'POST', url: './includes/ajaxGetData.php', data: 'url=' + encodeURIComponent(url), cache: false, timeout: 10000,
error : function(){
timer = window.setTimeout( get_data( url ), 2000 );
},
success: function(html){
if( html.substr(0,12) == '<!-- die -->' ) {
$("#result").html('<p>Complete...</p>' + html );
$('#requests').html('');
clearTimeout(timer);
}else{
$("#result").html(html);
timer = window.setTimeout( get_data( url ), 2000 );
}
}
});
}
get_data( 'http://example.com' );
任何人都可以看到我出错的地方吗?
答案 0 :(得分:2)
timer = window.setTimeout( get_data( url ), 2000 );
此调用get_data
并为此调用的结果创建超时。请按照以下方式使用:
timer = window.setTimeout(function () { get_data(url) }, 2000);
答案 1 :(得分:0)
加速来自你成功的if else中的setTimeout,似乎总是如此。
尝试使用html评论选择
$(html).match(/<!--.*?-->/g));
或在你的情况下
$(html).match(/<!-- die -->/g));
考虑如果覆盖已经设置的Timer
会发生什么timer = window.setTimeout( get_data( url ), 2000 );
清楚它是因为你设置了一个新的,否则“旧的”将开火
clearTimeout(timer);
timer = window.setTimeout( get_data( url ), 2000 );