Une lecture asynchrone et la mise en cache des fichiers multiples en nodejs

J'ai un tableau qui garde l'URL de plusieurs fichiers. Par exemple:

var files = ['1.html', '2.html', '3.html'];

J'ai besoin de les lire de manière asynchrone et de les enregistrer dans un objet nommé cache (cache = {}).
Pour ce faire j'ai utilisé le code:

for(var i = 0; i < files.length; i++){
    require('fs').readFile(files[i], 'utf8', function (error,data) {
        cache[files[i]]=data;
    });
}

À la fin j'ai le résultat:

cache = { undefined : 'File 3 content' }

Je comprends que les "readFile" actes après la boucle est terminée et elle perd de son champ d'application. Est-il un moyen de résoudre ce problème ou une autre méthode pour lire les fichiers à partir d'un tableau et de les mettre en cache?

OriginalL'auteur micnic | 2012-03-08