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

时间:2013-06-19 01:10:58

标签: javascript xmlhttprequest appcelerator appcelerator-mobile

我正在处理文件上传器,其中大约10个文件通过for循环同时上传。

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

我已经包含了我的简化代码,但基本上它是一个循环,它通过一个图像数组(theAttach),并为每个图像设置一个xhrAttach来发送图像。所以说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);        

                }                           

1 个答案:

答案 0 :(得分:1)

Cocco钉了它!他建议我将每个xhr缓存到一个容器数组中,因此我可以访问单个xhr并以此方式中止它,即xhrAttach[i].abort()

我这样做了,它完美无缺!谢谢cocco!