More promise API
Promise.all
This API will allow us to take in an iterable, an array of promises and return a new promise.
That returned promise will only be resolved when all listed promises are resolved, the array of their results will become the result of this returned promise.
If any of the promises is rejected, the promise returned by Promise.all
immediately rejects with that error
let promise = Promise.all(iterable);
// Example
Promise.all([
new Promise(resolve => setTimeout(() => resolve(1), 3000)), // 1
new Promise(resolve => setTimeout(() => resolve(2), 2000)), // 2
new Promise(resolve => setTimeout(() => resolve(3), 1000)) // 3
]).then(console.log);
Promise.allSettled
A less stricter version of Promise.all
, it waits for all promises to settle, and regardless of the result.
let urls = [
'https://api.github.com/users/iliakan',
'https://api.github.com/users/remy',
'https://no-such-url'
];
Promise.allSettled(urls.map(url => fetch(url)))
.then(results => { // (*)
results.forEach((result, num) => {
if (result.status == "fulfilled") {
alert(`${urls[num]}: ${result.value.status}`);
}
if (result.status == "rejected") {
alert(`${urls[num]}: ${result.reason}`);
}
});
});
Promise.race
Similar to Promise.all
but waits only for the first settled promise and get its result or error
The first promise that is resolved will become the value.
Promise.any
Similar to Promise.any
but waits for the first fulfilled promise. If all of the promises are rejected then the returned promise is rejected with Aggregateerror
with all the promise error in its errors
property.
No Comments