Javascript 恢复中止的AJAX请求
在中止期间,我将中止的对象推入数组中。当我再次调用request时,我想首先调用中止的请求 当前代码:Javascript 恢复中止的AJAX请求,javascript,node.js,ajax,Javascript,Node.js,Ajax,在中止期间,我将中止的对象推入数组中。当我再次调用request时,我想首先调用中止的请求 当前代码: $.xhrPool = [] var invokeService = function (method, url, params, data, headers = {}, dataType = "json", contentType = "application/json") { return new Promise(function (resolve, re
$.xhrPool = []
var invokeService = function (method, url, params, data, headers = {},
dataType = "json", contentType = "application/json") {
return new Promise(function (resolve, reject, onCancel) {
var xUrl = url + (!params ? '' :
typeof (params) === "object" ? "?" + $.param(params) : "/" + params)
var xhr = $.ajax({
method: method,
headers: { ...headers, "X-URL-Redirect": xUrl },
dataType: dataType,
contentType: contentType,
url: "/api",
data: typeof (data) === "string" ? data : JSON.stringify(data)
})
if ($.xhrPool.length !== 0 ) {
for (var i = 0; i < $.xhrPool.length; i++) {
if ($.xhrPool[i].readyState === 0) {
$.xhrPool[i] = xhr;
xhr.then(function success(data, status, req) {
console.log("call from insdie")
resolve(data)
}, function error(err, status) {
console.log(status, err.responseText)
reject(err.responseText || "Cannot conect to server");
})
}
}
}
xhr.then(function success(data, status, req) {
resolve(data)
}, function error(err, status) {
console.log(status, err.responseText)
reject(err.responseText || "Cannot conect to server");
})
onCancel(function () {
if (xhr && xhr.abort) {
xhr.abort();
$.xhrPool.add(xhr);
}
else console.log("could not abort request")
});
})
}
$.xhrPool=[]
var invokeService=函数(方法、url、参数、数据、头={},
dataType=“json”,contentType=“application/json”){
返回新承诺(函数(解析、拒绝、取消){
var xUrl=url+(!params?“”:
typeof(params)==“对象”?“+$。param(params):“/”+params)
var xhr=$.ajax({
方法:方法,,
标头:{…标头,“X-URL-Redirect”:xUrl},
数据类型:数据类型,
contentType:contentType,
url:“/api”,
数据:typeof(数据)=“string”?数据:JSON.stringify(数据)
})
如果($.xhrPool.length!==0){
对于(变量i=0;i<$.xhrPool.length;i++){
if($.xhrPool[i].readyState==0){
$.xhrPool[i]=xhr;
然后(函数成功(数据、状态、请求){
console.log(“来自insdie的调用”)
解析(数据)
},功能错误(错误,状态){
console.log(状态,err.responseText)
拒绝(err.responseText | |“无法连接到服务器”);
})
}
}
}
然后(函数成功(数据、状态、请求){
解析(数据)
},功能错误(错误,状态){
console.log(状态,err.responseText)
拒绝(err.responseText | |“无法连接到服务器”);
})
onCancel(函数(){
if(xhr&&xhr.abort){
xhr.abort();
$.xhrPool.add(xhr);
}
else console.log(“无法中止请求”)
});
})
}
因此,当我再次调用invoke服务时,我希望运行$.xhrPool请求,并且只使用中止的请求更新$.xhrPool