Javascript 如何在收到响应之前一直发送ajax请求?

Javascript 如何在收到响应之前一直发送ajax请求?,javascript,xml,ajax,Javascript,Xml,Ajax,我需要每隔2秒左右敲打一次相同的ajax请求,直到收到响应。这是因为它被发送到的设备一次会休眠3秒钟——它需要在唤醒时捕获请求。有没有一种简单的方法可以通过在我的代码中添加一些东西来做到这一点?不使用jquery 这就是我只发送一个请求的原因: function ePOST(url, postData, callback) { var postReq = AjaxRequest(); postReq.onreadystatechange = function() { if (postR

我需要每隔2秒左右敲打一次相同的ajax请求,直到收到响应。这是因为它被发送到的设备一次会休眠3秒钟——它需要在唤醒时捕获请求。有没有一种简单的方法可以通过在我的代码中添加一些东西来做到这一点?不使用jquery

这就是我只发送一个请求的原因:

 function ePOST(url, postData, callback) {
var postReq = AjaxRequest();
postReq.onreadystatechange = function() {
    if (postReq.readyState == 4) {
        if (postReq.error) {
            callback(1, "Request had an error.");
            alert('postReq Error');
        } else {
            var stat;
            try {
                stat = postReq.status;
            } catch (err) {
                callback(1, "Failed to get HTTP status from server.");
                return;
            }
            if (stat == 200 || stat == 0) {
                callback(0, postReq.responseText);
            } else {
                callback(1, "Unexpected HTTP Status: "
                        + postReq.status);
                alert('Unexpected HTTP Status: '
                    + postReq.status);
            }
        }
    }
}
if (postReq.overrideMimeType){
    postReq.overrideMimeType("text/xml");
}
setTimeout('',1000);
postReq.open("POST", url, true);
postReq.send(postData);
return postReq;
}

我认为您应该能够做到这一点,只需对该函数进行很少的修改

var intervalId = window.setInterval(function() {
    epost(<url>,<data>,function(error,response) {
        if (!error) {
            window.clearInterval(intervalId);
        } else {
            alert(response); // or handle error some other way
        }
        // do something with the data
    });
},2000);
我能想到的唯一问题是,如果ajax调用返回所需时间超过2秒,那么您可能无法及时清除间隔。

可能(读取:可能)重复“”。。。
var intervalId;
intervalId = window.setInterval(....