所以现在我不断地用GET发送xmlhttprequests到一个PHP脚本,这个脚本让我回到文件夹中的文件数量。如何连续检查AJAX和PHP文件夹中有多少文件
我用setInterval()
重复了javascript函数,它工作得很好,但我希望setInteral()
一旦从我的PHP脚本中取回某个数字就会停止。
这里是我的代码:
<script>
function checkmedia(url,format) {
var format1 = format;
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
progress = this.responseText;
document.getElementById("progress").innerHTML =
this.responseText;
}
};
xhttp.open("GET", 'checkfilecount.php?userurl='+url+'&act=run&format-option=' + format, true);
xhttp.send();
if(progress != "100") {
var media_progress = setInterval(checkmedia.bind(null,url,format1), 10000);
}
}
</script>
由于我continiously调用这个XMLHttpRequest的和多次(一个表)我得到了内存泄漏。
欢迎任何形式的帮助。谢谢。
我认为这是一个更好的方法,因为'setInterval'不会等待前一个实例完成处理,如果它需要很长时间,我们可能会有多个实例在运行,导致内存再次泄漏。这是一个可能的情况? –
@BlazeSahlzen - 很明显,'setTimeout()'版本一次最多保证一个ajax调用,所以我认为这样更安全,虽然我只是意识到我简化了一点,因为我应该这样做,因为我应该把在'onreadstatechange'处理程序中(如果我现在要这样做),并且我应该允许发生ajax错误(我不会为此烦恼)。即使发生错误,至少'setInterval()'也会继续轮询。 – nnnnnn
我在这个答案中使用的代码,它完美的作品!谢谢。尽管如此,两个答案都非常有帮助,我从他们身上学到了很多东西。谢谢 – userlip