Задача
Выполнить массив промисов один за другим, не параллельно.
Пример
const tasks = [
() => Promise.resolve(1),
() => Promise.resolve(2),
() => Promise.resolve(3),
];
sequential(tasks).then(console.log);Решение
Оптимальное решение
async function sequential(promises) { const results = []; for (const promise of promises) { results.push(await promise()); } return results; }
Альтернативное решение (reduce-цепочка)
function sequential(promises) { return promises.reduce((promiseChain, currentPromise) => { return promiseChain.then((results) => { return currentPromise().then((result) => { results.push(result); return results; }); }); }, Promise.resolve([])); }