Какой инструмент использовать для синхронной очереди задач?

Хотелось бы необычного, с точки зрения логики асинхронного JS. А именно некоторой привычной очереди задач, в которой каждая следующая выполняется после завершения предыдущей. Есть какое-то решение готовое для этого?
  • Вопрос задан
  • 84 просмотра
Пригласить эксперта
Ответы на вопрос 2
bingo347
@bingo347 Куратор тега Node.js
Crazy on performance...
Так понимаю сами задачи асинхронные, но их последовательно надо выполнять.
Обычного массива функций и промисов хватит за глаза:

Вариант 1:
function series(tasks) {
    return tasks.reduce((p, task) =>
        p.then(() =>
            task()), Promise.resolve());
}

series([
    async () => { /* ... */ },
    async () => { /* ... */ },
    async () => { /* ... */ },
    async () => { /* ... */ },
]);


Вариант 2:
async function series(tasks) {
    for (const task of tasks) {
        await task();
    }
}

series([
    async () => { /* ... */ },
    async () => { /* ... */ },
    async () => { /* ... */ },
    async () => { /* ... */ },
]);
Ответ написан
Комментировать
@davidnum95
Вот базовая реализация очереди тык
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы