promiseAll
// const [user, posts, tags] = await Promise.all([
// fetch('/api/user').then((r) => r.json()),
// fetch('/api/posts').then((r) => r.json()),
// fetch('/api/tags').then((r) => r.json()),
// ]);
/**
* @param {Array} iterable
* @return {Promise<Array>}
*/
export default function promiseAll(iterable) {
return new Promise((resolve, reject) => {
const results = [];
let complete = 0;
if (iterable.length === 0) {
resolve([]);
return;
}
iterable.forEach((promise, idx) => {
Promise.resolve(promise)
.then((value) => {
results[idx] = value;
complete++;
if (complete === iterable.length) {
resolve(results);
}
})
.catch((err) => {
reject(err);
})
});
});
}