我用setTimeout不止一次,除了這次我從來沒有發現任何問題。 (在函數refreshPhalanx中) 這裏是代碼: (我曾經用過創建一個在3000到3500毫秒之間的隨機延遲並將其存儲在var「msec」中,但是在使用3000後,爲了測試它,以防萬一在構建延遲時發生錯誤,但仍然沒有結果..)jQuery的setTimeout不尊重時間
var n=1;
function refreshPhalanx(id){
console.debug(id);
//$('.refreshPhalanxLink').click();
if($('#'+id).length){
console.debug('still going'+n++);
var msec=Math.floor((Math.random()/2+3)*1000)
console.debug(msec);
setTimeout(refreshPhalanx(id), 3000); //I used msec before, but I put 3000 to test if it was just a mistake into the calculation of the milliseconds, or a problem with setTimeout method.
}
else
alert('Alle ore '+new Date($.now())+' la missione risulta ritirata.');
}
function delay(){
if($('.phalanx').length){
console.debug('appending');
$('.eventFleet').each(function(){
$(this).append('<button currentevent="'+$(this).attr('id')+'" class="buttons">calcola rientro</button>');
})
console.debug('appending');
$('.buttons').click(function(){
console.debug('click --->'+ $(this).attr('currentEvent'));
refreshPhalanx($(this).attr('currentevent'));
})
console.debug('appending');
}
else{
setTimeout(delay, 2000);
console.debug('delaying');
}
}
delay();
'的setTimeout(refreshPhalanx(ID),3000);'包含一個函數調用不是引用該函數。 – Xufox
你覺得'refreshPhalanx(id)'做什麼?答:它調用函數。立即。它的*返回值*傳遞給'setTimeout'。 –
'setTimeout'是**不是** jQuery,而是普通的vanilla DOM 0.請參閱[MDN](https://developer.mozilla.org/en/docs/Web/API/WindowTimers/setTimeout) – c69