如何正确取消一个永远不会完成的Ajax请求?

18 浏览
0 Comments

如何正确取消一个永远不会完成的Ajax请求?

这个问题类似于另一个问题,不同之处在于另一个问题是在JQuery的上下文中提出的,而我不使用JQuery。\n我的页面上的Ajax代码每隔十秒发出一次POST请求。偶尔会出现这样的情况,即我的客户端代码挂起等待一个永远不会出现的响应。\n代码将超时并重新发出Ajax请求,但首先我想清理有关未完成请求的所有内容:我不想留下任何残留状态以后会引起混乱。\n取消未完成的请求的正确方法是什么,以便事情得到适当的整理?\n谢谢!

0
0 Comments

取消一个未完成的Ajax请求需要存储一个对上一次Ajax请求的引用,并在开始下一次请求时中止它。

解决方法如下:

var lastRequest;
setInterval(function() {
    lastRequest.abort(); // 中止上一次请求
    lastRequest = new XMLHTTPRequest(); // 开始下一次请求
}, 10000);

这段代码会每10秒执行一次,中止上一次请求并开始下一次请求。

0