Captain
@Captain
Делаем сложный функционал под Joomla и не только

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

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

Вариант 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 () => { /* ... */ },
]);
Ответ написан
Ваш ответ на вопрос

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

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