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

时间:2017-08-31 07:55:08

标签: javascript ajax long-polling

在网上搜索如何使用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
 });

有人可以指导我吗?

1 个答案:

答案 0 :(得分:1)

我认为我找到了解决方案 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);
}