1

我需要每隔 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;
}
4

1 回答 1

0

我认为您应该能够通过对该功能进行很少的修改来做到这一点。

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);

我不是 100% 确定 intervalId 是否可用于关闭,但如果不是,您总是可以这样:

var intervalId;
intervalId = window.setInterval(....

我能想到的唯一问题是,如果 ajax 调用需要超过 2 秒才能返回,在这种情况下,您可能无法及时清除时间间隔。

于 2013-08-08T23:31:52.097 回答