代码之家  ›  专栏  ›  技术社区  ›  ZoFreX mxk

Adobe Air和多个XMLHttpRequests正在…奇怪

  •  0
  • ZoFreX mxk  · 技术社区  · 16 年前

    我正在用HTML+javascript制作一个小的AdobeAir应用程序(我的第一个)。我需要运行多个异步数据请求,但第二个请求似乎没有触发(请注意,请求最初不是并发运行的)。我试着将程序剥离到出现问题的最低限度,起初只触发了第一个请求,但后来事情变得很奇怪。代码和输出如下:

    <html> 
    <head>
        <script type="text/javascript" src="AIRAliases.js"></script> 
        <script type="text/javascript">         
            function download(page) {
                var url = "http://en.wikipedia.org/w/api.php?action=parse&format=xml&page=" + page;
                xmlhttp = new XMLHttpRequest();
                xmlhttp.open("GET", url,true);
                xmlhttp.onreadystatechange=function(){
                    if (xmlhttp.readyState == 4) {
                        air.trace("Done");
                    }
                }
                xmlhttp.send(null);
            }
    
            function appLoad() { 
                download("Main Page");
                download("Main Page");
            }  
        </script> 
    </head> 
    <body onLoad="appLoad()"> 
    </body> 
    </html>
    

    预期输出:

    Done
    Done
    

    实际产量:

    C:\AIRSDK\apps\HelloWorld>adl HelloWorld-app.xml
    Done
    C:\AIRSDK\apps\HelloWorld>adl HelloWorld-app.xml
    Done
    C:\AIRSDK\apps\HelloWorld>adl HelloWorld-app.xml
    Done
    C:\AIRSDK\apps\HelloWorld>adl HelloWorld-app.xml
    Done
    Done
    Done
    Done
    Done
    Done
    Done
    

    以前有人见过这样的东西吗?

    1 回复  |  直到 16 年前
        1
  •  2
  •   ZoFreX mxk    16 年前

    简单的答案是,您不应该重复使用xmlhttprequest对象(即使您没有意识到这是因为您是一个完整的javascript noob)。

    这条线:

                xmlhttp = new XMLHttpRequest();
    

    应该是:

                var xmlhttp = new XMLHttpRequest();