J'essaie d'envelopper ma tête autour de Promises et comment les utiliser sur des boucles asynchrones.Comment utiliser Promise.all() et une boucle async?
Je réunis le code suivant pour lire le contenu de trois fichiers (en utilisant forEach
) et lorsque toutes les promesses de résoudre journaliser les résultats de tous les fichiers:
var Promise = require('bluebird');
var fs = require('fs');
var path = require('path');
var files = ['1.json','2.json','3.json'];
var promises = []
files.forEach(function(file){
fs.readFile(path.join('./',file), 'utf8', function(err,data){
promises.push(new Promise(function(resolve, reject){
resolve(data)
})
);
})
});
Promise.all(promises).then(function(values){
console.log(values)
});
Je ne sais pas comment mettre la boucle à l'intérieur le .all()
J'ai essayé ce code mais cela enregistre un tableau vide.
Qu'est-ce que je fais mal?
a) ne pas utiliser 'forEach' (mais mieux' map') b) vous êtes * 'push'ing * la promesse asynchrone, le tableau est vide quand' Promise.all' le reçoit. Construis la promesse immédiatement, et seulement * 'la résout * asynchrone – Bergi