2015-04-16 1 views

Répondre

1
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:

  1. Parcourez toutes les URL.
  2. 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.
  3. 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).
  4. Profitez de la results entièrement peuplée!
+0

super! Je vais le tester maintenant et vous laisser savoir si quelque chose ne va pas !! Merci – Nicolas

+0

de travailler comme un charme – Nicolas

+0

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