我有一個每隔3秒運行一個函數的間隔。間隔被兩個Ajax調用阻塞
intervalStepper = window.setInterval('intervalTick()','3000');
function intervalTick() {
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else {// code for IE6, IE5
xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
gotResult(xmlhttp.responseText);
}
}
xmlhttp.open('GET','index.php?ajax=true',true);
xmlhttp.send();
}
function gotResult(res) {
alert(res);
}
此外,我只是另一個Ajax調用,它運行在按鈕單擊。現在
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else {// code for IE6, IE5
xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
agentDetailGotten(xmlhttp.responseText);
}
}
xmlhttp.open('GET','index.php?anotherPage=true',true);
xmlhttp.send();
,如果我時間只運行第二個代碼時的時間間隔蜱,並執行第一個呼叫,呼叫實際上是在大約同一時間運行。但是,似乎間隔時間不知何故死亡 - 他的鴿子不再勾選。
這是一個已知的問題還是我只是沒有看到大的東西......
感謝您的幫助!
您將全部**變量聲明爲隱式全局變量。使用'var'語句對''intervalTick()'函數執行本地'xmlhttp'請求。這不會解決您的問題,但它不會幫助它。 – Matt
此外,你應該***永遠不會傳遞字符串到'setTimeout' /'setInterval':使用'window.setInterval(intervalTick,'3000');'代替。欲瞭解更多信息,請參閱[這裏](http://stackoverflow.com/questions/6232574/is-it-bad-practice-to-pass-a-string-to-settimeout-if-yes-why) – Matt
哦, 'setTimeout'和'setInterval'的超時值應該是一個整數,而不是一個字符串,所以使用'window.setInterval(intervalTick,3000);' – Matt