gpt4 book ai didi

javascript - jqXHR 对象从数组中删除自身和容器

转载 作者:行者123 更新时间:2023-11-29 22:09:55 25 4
gpt4 key购买 nike

我将 jquery ajax 对象存储在一个数组中,这样我就可以根据用户触发的事件手动取消调用(如果它没有返回)。这些是我希望运行很长时间的 ajax 调用。

JavaScript

var ajaxCalls = [];
ajaxCalls[0] = $.ajax({...});

$("#cancelButton").on("click", function() { ajaxCalls[0].abort(); });

存在的问题是调用abort()方法后jqXHR对象从数组中消失

现在,在管理我的对象的内存时,这看起来很棒,因为它神奇地自行删除并很好地清理。但是,它在我的代码中留下了一个反模式,看起来我并没有自己清理。这也违背了我为添加方法创建删除伴随方法的目的。

这是有原因的吗?如果我的数组包含超过 1 个对象,它会完全适本地重新调整自身大小。

这个数组如果字母是 jqXHR 对象

['a', 'b', 'c', 'd']

当 jqXHR 对象 'b' 完成时变成这个数组

['a', 'c', 'd']

阅读代码,人们会预料到会发生这种情况

['a', null/undefined, 'c', 'd']

为什么?

编辑:

这是我能够重现我正在做的事情的 fiddle 。

作为直接数组元素:

[ jqXHR, jqXHR, jqXHR ]

http://jsfiddle.net/itanex/uHX8q/

作为数组中的键值对象元素:

[ { key: "key", value: jqXHR }, { key: "key", value: jqXHR } ]

http://jsfiddle.net/itanex/7DSrg/

最佳答案

complete 回调在您中止调用时运行。所以会发生这种情况:

ajaxCalls.pop();

还有你的 jqXHR 对象。

添加了 console.log 以显示 pop:

http://jsfiddle.net/ycpZc/

关于javascript - jqXHR 对象从数组中删除自身和容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18597915/

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