2015-04-16 3 views

ответ

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) 
    }); 

Это непроверенный код! Кроме того, он полагается на Array.prototype.forEach и новый объект Promise ES6. Идея работает следующим образом:

  1. Прокрутите все URL-адреса.
  2. Для каждого URL-адреса заберите его с помощью API fetch, сохраните возвращенное обещание в list.
  3. Кроме того, когда запрос будет завершен, сохраните результат в results.
  4. Создайте новое обещание, которое разрешает, когда все обещания в list разрешены (т. Е. Все запросы завершены).
  5. Наслаждайтесь полностью заполненным results!
+0

большой! Я проверю его сейчас и дам вам знать, если что-нибудь пойдет не так! Спасибо – Nicolas

+0

работает как шарм – Nicolas

+0

Прохладный! (В конце концов, это был первый раз, когда я использовал все это в комбинации. Приятно видеть, что моя интуиция JS по-прежнему держится на земле ES6 ...) – Boldewyn

Смежные вопросы