gpt4 book ai didi

javascript - JQuery Ajax 池

转载 作者:行者123 更新时间:2023-11-30 05:41:33 27 4
gpt4 key购买 nike

我正在开发一个单页应用程序,目前正在构建一个 JQuery、ajax 函数,以便我的所有调用都能通过。

对于一个典型的页面,我可能有 3 个 ajax 调用。我的想法是,如果用户互联网出去将这些 ajax 调用保存在一个数组中。然后做一个计时器并继续检查用户是否有互联网。一旦他们有了互联网,就可以打电话。因此,当用户离线时不会运行任何调用(除了检查互联网)并且一旦他们重新在线就可以做他们想做的事。所以在我的 beforeSend 中有这个。

beforeSend : function($xhr)
{
self.ajaxPool.push($xhr);

if(!self.validateConnection())
{
console.log(self.ajaxPool);
}
}

所以我的问题是,当我恢复连接并遍历我的数组到每个 $xhr 对象时,我可以调用什么函数来表示“嘿,做你现在应该做的事” ?例如$xhr.complete()?我已经在池上做了一个控制台日志,以在连接断开时查看对象,但它看起来没有一个功能可以解决问题。

最佳答案

我会完全放弃 beforeSend,因为无论如何你都在使用一个池并做这样的事情......

//where you want to make your initial request somewhere in code
//do this INSTEAD of calling $.ajax(options)
ajaxPool.push(options);

//an interval to handle the queue
setInterval(function(){
//nothing in the pool so do nothing
if(ajaxPool.length < 1) return;
//not online so don't try to send
if(!validateConnection()) return;
//hey we're online lets make the ajax request
doAjax(ajaxPool.shift());
},200);

function doAjax(options){
//add call backs since you seem to be using a single call back
options.complete=function(data){ ... };

//do call
$.ajax(options);
}

您可以使它更面向对象,并且可以在您知道它未被使用时暂停间隔,但我认为这已经理解了基本概念。

关于javascript - JQuery Ajax 池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20533167/

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