微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否可以发送http请求直到它通过

如何解决是否可以发送http请求直到它通过

我正在尝试向我的服务器发送 HTTP 请求,直到请求通过。我当前的实现每秒发送太多请求,这会导致浏览器滞后。我试图每 2 秒发出一次请求。我的代码有问题还是我的实现有问题?

如果有更好的方法(除了多次发送请求),请随意填写

const GetWeightXML = () => {
    var xmlhttp = new XMLHttpRequest();
    var interval_1;
    xmlhttp.onreadystatechange = function () {
        if (this.readyState == 4 && this.status == 200) {
            if (inverval_1 != null) {
                clearInterval(interval_1);
            }
            var interval = setInterval(GetWeightXML_Recieved(this,interval),1000);
        }
        else if (this.status == 404) {
            interval_1 = setInterval(GetWeightXML,2000);
        }
    }

    let request_url = `${window.location.protocol}//${window.location.hostname}:${window.location.port}/Temp/weight.xml`;

    xmlhttp.open("GET",request_url,true);
    xmlhttp.send();
}

function GetWeightXML_Recieved(xml,interval) {
    var xmlDoc = xml.responseXML;

    let finished = xmlDoc.getElementsByTagName('Finished').childNodes[0].nodeValue;
    if (finished == null || finished == "") {
        return;
    }

    if (finished == "true") {
        clearInterval(inverval);
        return;
    }

    let currWeight = document.getElementsByClassName('current-weight')[0];
    let timeElapsed = document.getElementsByClassName('time-elapsed')[0];

    currWeight.innerText = "Current Weight: " + xmlDoc.getElementsByTagName('Weight').childNodes[0].nodeValue;
    timeElapsed.innerText = "Time Elapsed: " + xmlDoc.getElementsByTagName('Time').childNodes[0].nodeValue;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。