Sobes.tech
Junior — Middle+
52

Создание очереди AsyncQueue для гарантированного последовательного выполнения асинхронных функций

Task condition

Необходимо разработать класс, который будет выполнять переданные функции строго одна за другой, даже если они возвращают Promise.

const asyncQueue = new AsyncQueue();

asyncQueue.add(() => console.log("1"));
asyncQueue.add(
    () =>
    new Promise((resolve) => {
        setTimeout(() => {
            console.log("2");
            resolve();
        }, 1000);
    })
);
asyncQueue.add(() => console.log("3"));
asyncQueue.add(
    () =>
    new Promise((resolve) => {
        setTimeout(() => {
            console.log("4");
            resolve();
        }, 500);
    })
);