javascript - 在没有 JQuery 的 JavaScript 中,在 AJAX 请求中进行长轮询的最佳方法是什么?

标签 javascript ajax long-polling

嗨,在网上搜索如何在 JavaScript 中使用长轮询后,我最终找到了三种方法,其中提到了 here简单来说,它们是使用 JQuery 实现的。如果我发送到服务器的 AJAX 请求是异步 GET 请求,我很困惑该使用哪一个,而且我不知道它可能需要多少时间。

这是一个 AJAX 请求示例:

function asynchGETRequest(method,url){
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        console.log("ok");
    }
    };
    xhttp.open(method, url, true);
    xhttp.send();
    return (xhttp.responseText);
}


var clientFunctions={
     getAnswers : function(callback){
        var res=asynchGETRequest("GET", "http://localhost:9000/answers");
        callback(JSON.stringify(res));
     }
}

 clientFunctions.getAnswers (function(){
       //do some code here after the ajax request is ended
 });

有人可以指导我吗?

最佳答案

我想我找到了解决方案 here

function loadFile(sUrl, timeout, callback){

    var args = arguments.slice(3);
    var xhr = new XMLHttpRequest();
    xhr.ontimeout = function () {
        console.error("The request for " + url + " timed out.");
    };
    xhr.onload = function() {
        if (xhr.readyState === 4) {
            if (xhr.status === 200) {
                callback.apply(xhr, args);
            } else {
                console.error(xhr.statusText);
            }
        }
    };
    xhr.open("GET", url, true);
    xhr.timeout = timeout;
    xhr.send(null);
}

关于javascript - 在没有 JQuery 的 JavaScript 中,在 AJAX 请求中进行长轮询的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45976161/

相关文章:

javascript - Jquery .css() 不起作用(可能是由其他原因引起的)

java - Wicket 反馈消息和 AjaxButton

jquery - 使用 jquery ajax 调用模拟表单提交

java - 如何处理持久的 http 请求

c# - 轮询的替代方案?

jquery - 与 facebook 和 gmail 相比,我自己的长轮询实现

javascript - html 中的 data-reveal-id 属性到底是什么?与经典 id 属性有什么区别?

encryption - 为什么我的 crypto.createHmac() 会为相同的输入生成不同的 HMAC?

使用 csrfmiddlewaretoken 和 csrftoken cookie 设置的 Ajax POST 仍然会出现 django 403 Forbidden

javascript - React Native Expo 如何使用 expo 图像选择器将图像上传到 Firebase