JQuery Ajax Pool

JQuery Ajax Pool

本文关键字:Pool Ajax JQuery      更新时间:2023-09-26

我正在开发一个单页应用程序,目前正在构建一个JQuery、ajax函数,用于执行所有调用。

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

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,当你知道它没有被使用时,你可以暂停间隔,但我认为这传达了基本概念。

我一直在为我的RIA应用程序使用这个Offline JS。它对于您的离线场景来说非常可靠

  • 监视查找失败的ajax请求
  • 通过请求图像或假资源来确认连接状态
  • 自动获取在连接断开时发出的ajax请求,并在连接恢复后重新生成这些请求

https://github.com/HubSpot/offline