Задачка на промисы

Есть 3 функции :

function foo(callback) {
    setTimeout(function () {
        callback('A');
    }, Math.random() * 100);
}

function bar(callback) {
    setTimeout(function () {
        callback('B');
    }, Math.random() * 100);
}

function baz(callback) {
    setTimeout(function () {
        callback('C');
    }, Math.random() * 100);
}

Как, не меняя функции, вывести с помощью них в консоль A B C в такой последовательности при каждом запуске?


Ответы (1 шт):

Автор решения: Oliver Patterson

function foo(callback) {
    setTimeout(function () {
        callback('A');
    }, Math.random() * 100);
}

function bar(callback) {
    setTimeout(function () {
        callback('B');
    }, Math.random() * 100);
}

function baz(callback) {
    setTimeout(function () {
        callback('C');
    }, Math.random() * 100);
}


Promise.all(
    [
        new Promise((resolve) => foo(resolve)),
        new Promise((resolve) => bar(resolve)),
        new Promise((resolve) => baz(resolve))
    ]
)
.then((values) =>
{
    values.forEach((value) => console.log(value))
});

→ Ссылка