我正在使用HTML + Javascript制作一个小型的Adobe AIR应用程序(我的第一个)。我需要运行多个异步数据请求,但是第二个似乎并没有触发(请注意,这些请求最初并未并发运行)。我尝试将程序缩减到出现问题的最低限度,起初仅触发了第一个请求,但随后情况变得很奇怪。代码和输出如下:

<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


有人看过这样的东西吗?

最佳答案

简单的答案,您不应该重复使用xmlhttprequest对象(即使您没有意识到自己是因为您是Java语言的完整菜鸟)。

这行:

            xmlhttp = new XMLHttpRequest();


应该:

            var xmlhttp = new XMLHttpRequest();

10-08 17:33