Un bon modèle à utiliser pour plusieurs xmlhttprequests utilisés par différents processus

Je me demande quel est le bon modèle à utiliser lorsque vous pouvez avoir plusieurs requêtes xmlhtt qui font partie de différents processus comme (vérifier la connexion, récupérer l'info-bulle et l'affichage, afficher les sous-enregistrements / ouvrir les détails).

Votre entrée sur mon code jusqu'à présent est plus que bienvenue, de même que de bons articles pour la référence sur la gestion asynchrone des processus.

Voici ce que j'ai jusqu'à présent essayé d'utiliser un médiateur et essayer de définir une séquence d'événements à déclencher par le médiateur et initié par un travailleur pour un certain processus

var mediator={ events:[], // bind functions to events, optionally once only if this function doesn't // need to handle the event during the lifetime of the application addListener:function(name,processor,onceOnly){ if(!mediator.events[name]){ mediator.events[name]=new Array({ processor:processor, once: onceOnly ? true : false }); return; } mediator.events[name].push({ processor:processor, once: onceOnly ? true : false }); }, trigger:function(name,data){ var i=0;//check if mediator[name] exist for(i=0;i<mediator.events[name].length;i++){ try{ mediator.events[name][i].processor(data); // problem is when a use once handler is the 3rd in the chain and the // second handler fails then the 3rd is never removed // could trigger an error here that has a cleaner listner }finally{ if(mediator.events[name][i].once){ mediator.remove(name,mediator.events[name][i]); } } } }, // removing listener from event remove:function(name,event){ for(var i=0;i<mediator.events[name].length;i++){ if(mediator.events[name][i]==event){ mediator.events[name].splice(i,1); return; } } }, // used to provide an event chain through data that will execute a certain // process triggerNext:function(data){ // some checks on data mediator.trigger(data.events[data.index++],data); } } // possible response parsers var parser=function(type){ var parseLogin=function(data){ console.log(data); // should call triggerNext here for the worker to be notified. } if(type=="loginParser"){ return parseLogin; } } // connects and triggers next var connector=function(){ this.response=""; this.commObject=null; this.connect=function(data){ $.get(data.url, function(res) { data.commObject=this;//maybe you'd like to inpect it data.response=res; mediator.triggerNext(data); });//trigger fail event if failed }; } // example of initiating a process $("document").ready(function(){ //add all listeners that are used during the entire execution // of the application here var p=parser("loginParser"); mediator.addListener("checkLogin",p); //the following is a temporary listener, this code would be in // a worker object initLogin function. var c=new connector(); mediator.addListener("connect",c.connect,true); // the data determines what process will be invoked // this could be in a worker.initLogin function var data={ processType:"SendLoginAndCheck", url:"test.html", post:"",//could check in the connector.connect to see if post is set events:["connect","checkLogin"], //there is no worker.afterLogin but the 3rd event could be finishprocess //and a worker object's function can be called to process that index:0 } //start the process mediator.triggerNext(data); });