【发布时间】:2009-11-20 10:23:15
【问题描述】:
我从这个博客获得了以下请求队列实现:
http://dsgdev.wordpress.com/2006/10/28/building-a-javascript-http-request-queue/
并想用对象变量包装它。可惜里面的变量初始化不起作用。
希望有人可以帮助我解决这些问题。提前致谢
var requestQueue = { inCall : false, // 如果我们当前正在通话中,则可以跟踪该变量 callToArray : new Array(), // 呼叫队列 returnToArray : new Array(), // 调用完成时要执行的函数队列 reqMethodArray : new Array(), // 请求方法的队列 创建请求对象:函数(){ var reqObj; var browser = navigator.appName; if(browser == "Microsoft Internet Explorer"){ reqObj = new ActiveXObject("Microsoft.XMLHTTP"); isIE = 真; }别的{ reqObj = 新的 XMLHttpRequest(); } 返回请求对象; }, sendCall:函数(whereTo,returnTo,reqMethod){ // 获取下一个数组项并从数组中删除 this.callToArray.push(whereTo); this.returnToArray.push(returnTo); if (reqMethod != "GET" || reqMethod != "POST") { reqMethod = "GET"; } this.reqMethodArray.push(reqMethod); }, 呼叫队列:函数(){ // 检查队列并在队列中发送下一个呼叫 if(!this.inCall && this.callToArray.length > 0){ // 我们有什么在队列中吗? 如果(this.callToArray.length > 0){ // 我们这样做了,所以在调用数组中获取第一个项目并将其删除 whereTo = this.callToArray.shift(); returnTo = this.returnToArray.shift(); reqMethod = this.reqMethodArray.shift(); // 发送该呼叫 this.doCall(whereTo, returnTo, reqMethod); }别的{ // 更新调试队列 } }别的{ // 更新调试队列 } }, doCall:函数(whereTo,returnTo){ this.inCall = true; var http = this.createRequestObject(); http.open('get', whereTo); // 我们有一个功能可以在通话完成后进行通话吗? 如果(returnTo.length > 0){ eval("http.onreadystatechange = " + returnTo); } // 发送呼叫 http.send(null); } }; setInterval(requestQueue.callQueue, 100);【问题讨论】:
标签: javascript object variables queue xmlhttprequest