在单个页面应用程序上工作,并且我目前正在构建一个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);
}
您可以将其设置为更多OOP,并且可以在不使用该间隔时暂停该间隔,但是我认为这可以理解基本概念。