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. Идея работает следующим образом:
- Прокрутите все URL-адреса.
- Для каждого URL-адреса заберите его с помощью API
fetch
, сохраните возвращенное обещание в list
.
- Кроме того, когда запрос будет завершен, сохраните результат в
results
.
- Создайте новое обещание, которое разрешает, когда все обещания в
list
разрешены (т. Е. Все запросы завершены).
- Наслаждайтесь полностью заполненным
results
!
большой! Я проверю его сейчас и дам вам знать, если что-нибудь пойдет не так! Спасибо – Nicolas
работает как шарм – Nicolas
Прохладный! (В конце концов, это был первый раз, когда я использовал все это в комбинации. Приятно видеть, что моя интуиция JS по-прежнему держится на земле ES6 ...) – Boldewyn