Comment mettre en œuvre la Barre de Progression et des Rappels avec async nature de la FileReader

J'ai le FileReader API appelée dans une boucle for pour parcourir de multiples objets de fichier. Je suis en utilisant FileReader essentiellement à l'affichage de l'aperçu des images.

function() {
    for (var i in Files) {
        var fileReader = new FileReader();
        fileReader.readAsBinaryString(Files[i]);
        fileReader.onload = function() {

            //do something on FileReader onload

        }

        fileReader.onprogress = function(data) {
            if (data.lengthComputable) {                                            
                var progress = parseInt( ((data.loaded / data.total) * 100), 10 );
                console.log(progress);
            }
        }
    }

    //do something on completion of FileReader process
    //actions here run before completion of FileReader
}

Je me suis heurtée à deux problèmes en raison de la nature asynchrone de la FileReader API. Tout d'abord, le onprogress événement se déclenche pour chaque FileReader instance. Cela me donne beaucoup de progrès pour chaque fichier. Alors que, j'ai l'intention d'afficher le total des progrès de tous les fichiers au lieu de fichiers individuels.

Deuxièmement, je veux effectuer des actions qui ne devrait être effectuée que lorsque toutes les instances (un pour chaque fichier) de la FileReader avez terminé. Actuellement, depuis FileReader fonctionne en mode asynchrone, les actions à exécuter avant d'FileReader complète de la tâche. J'ai beaucoup cherché et encore pour trouver une solution à ces problèmes. Toute aide est appréciée.

InformationsquelleAutor John | 2013-05-08