Javascript 恢复中止的AJAX请求

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

在中止期间,我将中止的对象推入数组中。当我再次调用request时,我想首先调用中止的请求

当前代码:

    $.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