bon ce n'est pas vraiment un bug mais il y a 2 petits soucis avec l'objet Web.
(Je précise que j'utilise uniquement le code)
Le premier déjà : Quand Actiona n'a plus d'action à effectuer dans sa pile, le script s’arrête donc les fonctions de callback n'arrivent jamais si on ne laisse pas tourner une boucle dans le vide ou n'importe quoi histoire que la pile ne soit pas vide.
On se retrouve donc à écrire des while (data.isDownloading() === true) {} pour pas que le script s’arrête.
Le deuxième : Voila un code en exemple qui au passage, ruine l'asynchrone de la fonction. La boucle while, outre de résoudre le pb numéro 1, résout un autre problème ici. Ce problème c'est la variable i. Voilà ce qu'il se passe :
Tour de boucle :
[*]Un objet Web est initialisé
[*]download est appellé
[*]Attente que le téléchargement soit fini
[*]Des que téléchargement fini, onFinished est appelé il se sert du compteur de la boucle pour savoir quel est le bon objet dans le tableau
Et cela x nombre de fois
Code: Select all
for (var i = 0; i < url.length; i++) {
data[i] = new Web({
onFinished : function() {
image[i] = data[i].toImage();
},
onError : function(error) {
erreur[url[i]] = error;
}
});
data[i].download(url[i]);
while (data[i].isDownloading() === true) {}
}
Il faudrait pouvoir définir un paramètre aux fonctions de callback, au moins onFinished et onDownloadProgress ou sinon qu'elles retournent en paramètre l'objet qui les a appelé.
Code: Select all
onFinished : function(i) {
tab2[i] = tab1[i].toImage();
}