2 votes

Comment interrompre une connexion XHR lorsque plusieurs sont exécutées simultanément ?

Je travaille sur un téléchargeur de fichiers, où environ 10 fichiers sont téléchargés en même temps via une boucle for.

Maintenant, j'essaie de créer un bouton d'annulation pour annuler TOUTES les téléchargements, cependant avec mon code actuel, seul le tout dernier téléchargement sera annulé .

J'ai inclus mon code résumé, mais en gros, c'est une boucle qui passe par un tableau d'images (theAttach) et pour chaque image, il met en place un xhrAttach pour envoyer les images. Ainsi, disons que 10 images commencent à être téléchargées en même temps.

Si un bouton d'annulation est pressé, je lance la commande xhrAttach.abort() ; mais seule la toute dernière image abandonne.

Des idées ?

                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);        

                }

1voto

Mark Points 797

Cocco l'a cloué ! Il m'a suggéré de mettre en cache chaque xhr dans un tableau de conteneurs, ce qui me permettrait d'accéder à chaque xhr et de l'interrompre de cette façon. xhrAttach[i].abort()

J'ai fait cela et cela fonctionne parfaitement ! Merci cocco !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X