// 1: 放弃后触发的提交
// 2: 放弃先触发的提交
var Ajax_Unique_Status_Arr = [1, 2];
var pendingRequests = {};
$.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
var Ajax_Unique_Status = options.unique;
//这里的Ajax_Url可以针对post请求, 提取{url, data} 的object指纹;
var Ajax_Url = options.url;
console.log(options, originalOptions, jqXHR);
// 若无需,直接return;
if (Ajax_Unique_Status_Arr.indexOf(Ajax_Unique_Status) === -1) {
return;
}
// 去重处理
if (!pendingRequests[Ajax_Url]) {
pendingRequests[Ajax_Url] = jqXHR;
}else{
if (Ajax_Unique_Status === Ajax_Unique_Status_Arr[0]) {
jqXHR.abort();
console.log('abort current request , url is : ', Ajax_Url);
} else if (Ajax_Unique_Status === Ajax_Unique_Status_Arr[1]) {
pendingRequests[Ajax_Url].abort();
console.warn('abort last request , url is : ', Ajax_Url);
}
}
// 后期处理
var complete = options.complete;
options.complete = function(jqXHR, textStatus) {
pendingRequests[Ajax_Url] = null;
if ($.isFunction(complete)) {
complete.apply(this, arguments);
}
};
});
var url = 'http://www.grycheng.com/2016/01/07/%E7%AE%80%E8%BF%B0jquery-ajax%E7%9A%84%E6%89%A7%E8%A1%8C%E9%A1%BA%E5%BA%8F/';
$.ajax({
url,
type: 'GET',
// unique: 1,
complete : ()=>{
console.log('complete 1')
}
}).then((res)=>{
console.log('success 1')
}, (err)=>{
console.log('error 1')
})
$.ajax({
url,
type: 'POST',
// unique: 1,
}).complete((res)=>{
console.log('complete 22222', res)
})
网友评论