gpt4 book ai didi

javascript - setTimeout 停止工作

转载 作者:太空狗 更新时间:2023-10-29 15:31:44 26 4
gpt4 key购买 nike

我有一个页面,我想在其中保持文件中的值一直更新。

基本上,我有一个脚本,用于保存一些数据,以便我在 txt 文件中在网络上显示,然后我想在网络上显示这些数据。文本文件中的数据将每 20 秒左右更新一次。

一开始它运行良好,大概 3 分钟左右,然后页面停止更新。任何想法为什么会这样?

function updatepot(elementid) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById(elementid).innerHTML = this.responseText;
}
};
xmlhttp.open("GET", "../readData.php?q=" + elementid, true);
xmlhttp.send();

}

function updatePots()
{
updatepot("pot0");
}
function keeprunning()
{
setTimeout(updatePots, 1000);
keeprunning();
}


<?php
// get the q parameter from URL
$file = $_REQUEST["q"] . ".txt";
$myfile = fopen("potData/".$file, "r") or die("Unable to open file!");
$myData;
while(!feof($myfile)) {
$myData = $myData . fgets($myfile);
}
fclose($myfile);
echo $myData;
?>

最佳答案

一旦调用 setTimeout 函数,就会立即调用您的 keepRunning 方法。这意味着它不会像您可能希望的那样每秒被调用一次,而是不断被调用(每秒数千次)——您很快就会遇到内存问题,一切都会停止工作。

要解决此问题,请在 updatePots 函数末尾调用 keepRunning:

function updatePots()
{
updatepot("pot0");
keeprunning();
}
function keeprunning()
{
setTimeout(updatePots, 1000);
}

关于javascript - setTimeout 停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41527101/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com