JavaScript についての深い理解Promise.all()
Promise.all()
は、複数の非同期操作を同時に処理するための JavaScript の強力なメソッドです。複数の Promise を含む反復可能なオブジェクト (通常は配列) を受け取り、単一の Promise を返します。この単一の Promise は、すべての入力 Promise が正常に解決された場合にのみ解決されます。いずれかの Promise が拒否された場合、その単一の Promise は直ちに拒否されます。このガイドでは、Promise.all()
の機能、構文、動作、および実践的な例について説明します。
Promise.all()
の構文は簡単です:
<code class="language-javascript">Promise.all(iterable);</code>
このメソッドは、次の動作を持つ Promise を返します:
Promise.all()
は入力 Promise と同じ順序で結果の配列を返します。 Promise.all()
は直ちに拒否され、Promise の拒否理由が返されます。 この例では、異なるタイムアウト後に解決される 3 つの Promise を作成します。
<code class="language-javascript">const promise1 = new Promise((resolve) => setTimeout(() => resolve('One'), 1000)); const promise2 = new Promise((resolve) => setTimeout(() => resolve('Two'), 2000)); const promise3 = new Promise((resolve) => setTimeout(() => resolve('Three'), 3000)); Promise.all([promise1, promise2, promise3]) .then(values => console.log(values)) // 输出: ['One', 'Two', 'Three'] .catch(error => console.error(error));</code>
ここで、Promise.all()
は 3 つの Promise がすべて解決されるのを待ち、その結果を配列としてコンソールに記録します。
解決された値と Promise を混合することもできます:
<code class="language-javascript">const p1 = Promise.resolve(42); const p2 = Promise.resolve('Hello'); const p3 = new Promise((resolve) => setTimeout(() => resolve('World'), 1000)); Promise.all([p1, p2, p3]) .then(values => console.log(values)) // 输出: [42, 'Hello', 'World'] .catch(error => console.error(error));</code>
この場合、p1 と p2 はすぐに解決され、p3 は 1 秒後に解決されます。
Promise の 1 つが拒否された場合、Promise.all()
は直ちに拒否されます:
<code class="language-javascript">const p1 = Promise.resolve(42); const p2 = Promise.reject(new Error('Failed!')); const p3 = new Promise((resolve) => setTimeout(() => resolve('This will not run'), 1000)); Promise.all([p1, p2, p3]) .then(values => console.log(values)) .catch(error => console.error(error.message)); // 输出: 'Failed!'</code>
ここでは、p2 が拒否されたため、操作全体が失敗し、エラー メッセージが記録されます。
Promise.all()
Promise.all()
は、JavaScript で複数の非同期操作を管理するために不可欠なツールです。これにより、開発者は複数の Promise が解決されるのを待ってから他のロジックを続行できるようになり、コードが簡素化されます。ただし、1 つの Promise が失敗すると操作全体が失敗するため、失敗を正しく処理することが重要です。 Promise.all()
を効果的に使用する方法を理解すると、よりクリーンで効率的な非同期コードを作成できるようになります。
参考文献: [1] https://www.php.cn/link/ebd58b8a3f1d72f4206201da62fb1204 [2] https://www.php.cn/link/9181a74736d3b86345dadbc90e29390e [3] https://www.php.cn/link/2a3e953a5e3d81e67945bce5519f84c8 [4]https://www.php.cn/link/4c0303ffb193bd5e66078909a15268aa [5] https://www.php.cn/link/9c25dc28b94e5226f1983330dc421cec [6] https://www.php.cn/link/b2f1384b8feb04d2de9a85124dc64613 [7] https://www.php.cn/link/f1e1fd9e97f59379ed79bdf258d55042 [8] https://www.php.cn/link/9a5859b8f76280c97c0c185a19d17014 [9] https://www.php.cn/link/d3f010d6bc392b904f63ce5792891b71 [10] https://www.php.cn/link/4d419d5b4274ea8faaf4f37410b97bd6
以上がPromise.all()の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。