gpt4 book ai didi

jquery - 中止所有 ajax 请求

转载 作者:行者123 更新时间:2023-12-01 07:41:19 24 4
gpt4 key购买 nike

我已经实现了通常的 AJAX 池,但是当我中止所有请求时,它会以 2 个请求的增量中止它们,即。第一、第三、第五……这基本上就是我所做的:

$.ajaxSetup({
beforeSend: function(jqXHR, settings) {
$.xhrPool.push(jqXHR);
},
complete: function(jqXHR, text) {
// Remove a completed request from the array
var index = $.xhrPool.indexOf(jqXHR);
if (index > -1) {
$.xhrPool.splice(index, 1);
}
},
error: function(jqXHR, textStatus, errorThrown) {
// Remove a error request from the array
var index = $.xhrPool.indexOf(jqXHR);
if (index > -1) {
$.xhrPool.splice(index, 1);
}
}
});

function abortAll() {
$.each($.xhrPool, function(key, value) {
value.abort();
});
}

如果我在 $.each 中执行 console.log(value),其中一些是未定义的。如果我在 $.each 之前执行 console.log($.xhrPool),它们看起来都不错。

我错过了什么?

最佳答案

首先,即使在发生错误之后也会调用complete,因此如果您执行相同的操作,则无需处理两者。

其次,当您中止时,将调用 errorcomplete ,以便在迭代初始数组时更改初始数组($ .each),这通常是一个不好的模式。

因此,在您的 each 中,您位于第一个元素,您中止它(并更改数组以删除该元素),然后转到具有索引的元素2 之前是第三个,但现在是第二个,因为第一个被删除。

Array                      each index                target[xhr1, xhr2, xhr3, xhr4]       0                      xhr1[xhr2, xhr3, xhr4]             1                      xhr3[xhr3, xhr4]                   2                      undefined

关于jquery - 中止所有 ajax 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47818954/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com