Promise オブジェクトの集合の反復可能オブジェクトを取ります。そして、反復可能オブジェクトの中にあるいずれかのプロミスが履行されるとすぐに、履行されたプロミスの値で解決される単一のプロミスを返します。
反復可能オブジェクトの中に履行されたプロミスがない場合(与えられたプロミスがすべて拒否された場合)、返されたプロミスは AggregateError という、個々のエラーをグループ化した Error の新しいサブクラスで拒否されます。
| iterable | 反復可能オブジェクト、例えば Array です。 |
|---|
¶省く
Promise.any() は、先に拒否されたプロミスがあったとしても、最初に履行されたプロミスで解決されます。これは Promise.race() が、最初に決定されたプロミスで解決または拒否されるのとは対照的です。
const pErr = new Promise((resolve, reject) => {
reject("Always fails");
});
const pSlow = new Promise((resolve, reject) => {
setTimeout(resolve, 500, "Done eventually");
});
const pFast = new Promise((resolve, reject) => {
setTimeout(resolve, 100, "Done quick");
});
Promise.any([pErr, pSlow, pFast]).then((value) => {
alert(value);
// pFast fulfils first
})
//出力: "Done quick"
Promise.any() は履行されたプロミスがないと AggregateError で拒否されます。
const pErr = new Promise((resolve, reject) => {
reject('Always fails');
});
Promise.any([pErr]).catch((err) => {
alert(err);
})
//出力: "AggregateError: No Promise in Promise.any was resolved"
¶省く