Показать сообщение отдельно
  #6 (permalink)  
Старый 27.09.2021, 21:34
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,745

Я считаю предыдущие решения некорректными, т.к. при вызове функций используется другой callback. Не сам runCallback
Предлагаю свое решение
function one(callback) {
    setTimeout( function() {
        callback("First");
    }, Math.random() * 1000);
}
 
function two(callback) {
    setTimeout( function() {
        callback("Second");
    }, Math.random() * 1000);
}
 
function three(callback) {
    setTimeout( function() {
        callback("Third");
    }, Math.random() * 1000);
}
 
function runCallback(s) {
    console.log(s);
}

let console;
function call (...funs) {
    const cl = window.console.log
    let i = 0
    console = {
        log (...args) {
            cl(...args)
            if (i<funs.length) 
                 funs[i++](runCallback)
             else
                 console = window.console;
        }   
    }
    funs[i++](runCallback)
}

call(one, two, three)

Последний раз редактировалось voraa, 27.09.2021 в 21:37.
Ответить с цитированием