7

新しいフェッチ API ( https://fetch.spec.whatwg.org/ )を使用して一度に複数のファイルをフェッチしたいと考えています。ネイティブで可能ですか?もしそうなら、約束を活用してどうすればいいですか?

4

2 に答える 2

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

これはテストされていないコードです。さらに、 ES6Array.prototype.forEachの新しいオブジェクトに依存しています。Promiseアイデアは次のように機能します。

  1. すべての URL をループします。
  2. 各 URL について、fetchAPI で取得し、返された promise を に保存しlistます。
  3. さらに、リクエストが終了したら、結果を に保存しresultsます。
  4. list内のすべての promiseが解決された (つまり、すべての要求が終了した)ときに解決される新しい promise を作成します。
  5. 満員でお楽しみくださいresults
于 2015-04-16T13:57:03.133 に答える