var list = [];
var urls = ['1.html', '2.html', '3.html'];
var results = [];
urls.forEach(function(url, i) { // (1)
list.push(// (2)
fetch(url).then(function(res){
results[i] = res.blob(); // (3)
})
);
});
Promise
.all(list) // (4)
.then(function() {
alert('all requests finished!'); // (5)
});
Ceci est du code non testé! En outre, il s'appuie sur Array.prototype.forEach
et le nouvel objet Promise
de ES6. L'idée fonctionne comme ceci:
- Parcourez toutes les URL.
- Pour chaque URL, récupérez-la avec l'API
fetch
, stockez la promesse retournée dans list
. De plus, lorsque la requête est terminée, stockez le résultat dans results
.
- Créer une nouvelle promesse, qui se résout, lorsque toutes les promesses dans
list
sont résolues (c'est-à-dire, toutes les demandes terminées).
- Profitez de la
results
entièrement peuplée!
super! Je vais le tester maintenant et vous laisser savoir si quelque chose ne va pas !! Merci – Nicolas
de travailler comme un charme – Nicolas
Cool! (Après tout, c'était la première fois que j'utilisais tous ces trucs ensemble.) Bon à voir, que mon intuition JS tient encore en terre ES6 ...) – Boldewyn