gpt4 book ai didi

javascript - 连续调用 XMLHttpRequest

转载 作者:行者123 更新时间:2023-11-28 01:22:22 25 4
gpt4 key购买 nike

目前我正在 setInterval 基础上调用函数。

此函数向我的服务器发出 XMLHttpRequest 以获取更新信息。如果有可用更新,我会更新图像(使用 Canvas 元素)。

这是做这种事情的最佳方式吗?

我的代码:

调用代码:

    function StartFeedUp() {
if (tmrStartFeedUp) window.clearInterval(tmrStartFeedUp);
tmrStartFeedUp = setInterval(GetNextImage, 330);
}

我调用的函数:

  var isProcess = false;

function GetNextImage() {
try {
if (!isProcess) {
isProcess = true;
var urlTS = '/Cloud/isNewFrames.ashx?alias=' + alias + '&version=' + version + '&guidlogon=' + guidlogon;
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", urlTS, true);
xmlhttp.timeout = 200;
xmlhttp.send();
var nextts = xmlhttp.responseText;
}
isProcess = false;
}
catch (err) {
isProcess = false;
document.getElementById("divMode2").innerHTML = err;
}
}

最佳答案

除了重复 XHR 调用之外,您还可以使用 HTML5 Web Sockets它允许您保持与服务器的连接,服务器将在需要时推送数据。 Web Sockets 相对较新,因此旧浏览器不支持。

<小时/>

您的 XHR 是异步的,因此您应该监听 onreadystatechange 事件,而不是总是期望在 send() 调用之后立即获得响应:

xmlhttp.open("GET", urlTS, true);                  
xmlhttp.timeout = 200;
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
console.log("received " + xmlhttp.responseText);
}
}
xmlhttp.send();

关于javascript - 连续调用 XMLHttpRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23112113/

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