次のシナリオを考えてみましょう: URL の配列があり、次の配列を持つオブジェクトを取得したいとします。これらの URL にあるファイルからの対応するテキスト。 Promise.all 関数は、このタスクを処理するための便利なアプローチを提供します。
最初に、試行したコードは Promise.all を使用して各 URL の Promise を取得しました。ただし、後続の results.forEach の呼び出しは混乱を引き起こす可能性があります。この関数は各要素のコールバックをトリガーし、その結果、未定義の値の配列が生成されます。
正しいアプローチには、Promise.all を 2 回使用することが含まれます。最初のインスタンスは URL から応答を取得し、2 番目のインスタンスは応答をテキストに変換し、これらのテキストの配列を返します。
Promise.all(urls.map(u=>fetch(u))).then(responses => Promise.all(responses.map(res => res.text())) ).then(texts => { … })
または、応答からテキストを直接取得してコードを簡素化することもできます。 :
Promise.all(urls.map(url => fetch(url).then(resp => resp.text()) )).then(texts => { … })
async/await 構文を使用すると、コードはさらに簡潔になります:
const texts = await Promise.all(urls.map(async url => { const resp = await fetch(url); return resp.text(); }));
このアプローチを採用すると、URL の配列を効果的にフェッチし、次のオブジェクトを取得できます。対応するテキスト値。
以上がPromise.all を使用して URL の配列からテキストを効率的に取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。