I got the following Request Queue implementation from this blog:
http://dsgdev.wordpress.com/2006/10/28/building-a-javascript-http-request-queue/
and want to wrap it with a object variable. Unfortunately the variable initialization inside doesn't work.
Hope someone can help me with this stuff. Thanks in advance
var requestQueue = {
inCall : false, // VARIABLE TO TRACK IF WE ARE CURRENTLY IN A CALL
callToArray : new Array(), // QUEUE FOR CALLS
returnToArray : new Array(), // QUEUE FOR FUNCTION TO EXECUTE WHEN CALL COMPLETE
reqMethodArray : new Array(), // QUEUE FOR REQUEST METHOD
createRequestObject : function(){
var reqObj;
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer"){
reqObj = new ActiveXObject("Microsoft.XMLHTTP");
isIE = true;
}else{
reqObj = new XMLHttpRequest();
}
return reqObj;
},
sendCall : function(whereTo, returnTo, reqMethod){
// GET THE NEXT ARRAY ITEM AND REMOVE FROM THE ARRAY
this.callToArray.push(whereTo);
this.returnToArray.push(returnTo);
if (reqMethod != "GET" || reqMethod != "POST") { reqMethod = "GET"; }
this.reqMethodArray.push(reqMethod);
},
callQueue : function(){
// CHECK THE QUEUE AND SEND THE NEXT CALL IN LINE
if(!this.inCall && this.callToArray.length > 0){
// DO WE HAVE ANYTHING IN THE QUEUE?
if(this.callToArray.length > 0){
// WE DO, SO GET THE FIRST ITEM IN THE CALL ARRAY AND REMOVE IT
whereTo = this.callToArray.shift();
returnTo = this.returnToArray.shift();
reqMethod = this.reqMethodArray.shift();
// SEND THAT CALL
this.doCall(whereTo, returnTo, reqMethod);
}else{
// UPDATE DEBUG QUEUE
}
}else{
// UPDATE DEBUG QUEUE
}
},
doCall : function(whereTo, returnTo){
this.inCall = true;
var http = this.createRequestObject();
http.open('get', whereTo);
// DO WE HAVE A FUNCTION TO CALL ONCE CALL IS COMPLETED?
if(returnTo.length > 0){
eval("http.onreadystatechange = " + returnTo);
}
// SEND CALL
http.send(null);
}
};
setInterval(requestQueue.callQueue, 100);