Javascript 当多个连接同时运行时,如何中止XHR连接?

Javascript 当多个连接同时运行时,如何中止XHR连接?,javascript,xmlhttprequest,appcelerator,appcelerator-mobile,Javascript,Xmlhttprequest,Appcelerator,Appcelerator Mobile,我正在开发一个文件上传器,其中大约有10个文件通过for循环同时上传 现在我正在尝试创建一个取消按钮来取消所有上传,但是在我的当前代码中,只有最后一次上传才会取消 我已经包含了我的简化代码,但基本上它是一个循环,通过一个图像数组(attach),并为每个图像设置一个xhartach来发送图像。因此,假设10幅图像同时开始上传 如果按下取消按钮,我将运行命令xhrAttach.abort()但只有最后一个图像中止 有什么想法吗 for (var i=0;i<t

我正在开发一个文件上传器,其中大约有10个文件通过for循环同时上传

现在我正在尝试创建一个取消按钮来取消所有上传,但是在我的当前代码中,只有最后一次上传才会取消

我已经包含了我的简化代码,但基本上它是一个循环,通过一个图像数组(attach),并为每个图像设置一个xhartach来发送图像。因此,假设10幅图像同时开始上传

如果按下取消按钮,我将运行命令xhrAttach.abort()但只有最后一个图像中止

有什么想法吗

                for (var i=0;i<theAttach.length;i++)
                { 

                    var xhrAttach = Ti.Network.createHTTPClient();
                        xhrAttach.timeout = 15000;
                        xhrAttach.onsendstream = function(e){


                        };

                        xhrAttach.onreadystatechange = function() {

                            if (xhrAttach.readyState != 4) return;

                                    if ((i == theAttach.length) && (xhrAttach.readyState == 4))
                                    {               

                                    }           

                        };

                        xhrAttach.onerror = function() {
                        };


                            xhrAttach.open('POST', url, true);
                            xhrAttach.setRequestHeader('User-Agent', theuseragent());           
                            xhrAttach.send(AttachmentTransmitArray);        

                }                           

for(var i=0;iCocco搞定了!他建议我将每个xhr缓存到一个容器数组中,因此我可以访问单个xhr并以这种方式中止它,即
xhrAttach[i].abort()


我这样做了,效果非常好!谢谢cocco!

有一个abort()方法。您需要将每个xhr缓存到一个数组中…然后使用类似Xhratch[I].abort()的内容循环遍历它们。在您的代码中,每次都覆盖Xhratch,这就是为什么您创建的最后一个Xhratch是唯一可以中止的方法。您能提供一个示例吗