ホームページ >ウェブフロントエンド >jsチュートリアル >Promise.all() のポリフィル
入力: Promise の配列を受け取ります (必須ではありません)
出力: すべての成功 Promise の結果の配列を含む Promise を返します。
注: Promise が失敗すると、即座に拒否されます。
`
Promise.myAll = 関数 (約束) {
return new Promise(関数 (解決、拒否) {
// 入力が配列かどうかを確認します
if (!Array.isArray(promises)) {
return replace(new TypeError("引数は配列である必要があります"));
}
let results = []; let completedPromises = 0; promises.forEach(function (promise, index) { // Use Promise.resolve to handle non-promise values Promise.resolve(promise) .then(function (value) { results[index] = value; completedPromises += 1; // If all promises are resolved if (completedPromises === promises.length) { resolve(results); } }) .catch(function (error) { reject(error); // Reject if any promise fails }); }); // Handle case with empty array of promises if (promises.length === 0) { resolve([]); }
});
};
`
。すべての Promise が解決され、その結果は結果配列に保存されます。
。解決された Promise の数が入力配列の長さと等しい場合、外側の Promise は結果の配列で解決されます。
。 Promise の配列では、すべての値が Promise である必要はありません。数値、文字列、または任意の同期関数など、任意の値を使用できます。
渡された値がすでに Promise である場合 - 余分なラッピングや変更が発生しないように、同じ Promise を返します。
渡された値が Promise ではない場合 - 解決された Promise で値をラップし、Promise のように扱い、.then()
値で解決できるように、reject を使用すると、値がエラーとみなされ、catch ブロックに捕捉されます。
ご不明な点がございましたら、お気軽にコメント欄にてお問い合わせください。
以上がPromise.all() のポリフィルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。