编辑: 只要中止请求,浏览器就不应该再听它了。所以当它到达事件队列中的响应时,我的猜测是它应该抛出。
不过,如果您有任何关于它的问题,你可以尝试以下方法:
你能在你的成功的功能+网址取消本身,如果它检测到它不再需要做的检查运行?
举例来说(我不是说你应该这样来做,我没有尝试过任何连接到jqXHR要求):
var numReq = 0, lastReq;
$('#button').on('click', function(e) {
if (lastReq) { lastReq.abort(); }
numReq ++;
lastReq = $.ajax({
success : function(d, s, x) {
if (x.reqNum < numReq) { return; }
}
});
lastReq.reqNum = numReq;
});
我的理解是AJAX事件将不会被加入到事件队列,直到按钮点击后完成的,所以你不应该(理论上)担心阿贾克斯后设置reqNum ...
我也尝试下面的代码:
var numReq = 0, lastReq, timer = 100,
c = setInterval(function() {
if (lastReq) { lastReq.abort(); }
numReq ++;
lastReq = $.ajax({
url : 'index.html',
cache : false,
success : function(d, s, x) {
if (x.reqNum < numReq) { console.log('it happens'); }
}
});
lastReq.reqNum = numReq;
}, timer);
改变计时器以尝试匹配(尽可能接近)页面的加载时间。我没有“碰巧”出现。